我找过了,但什么也没找到。我有一个实体类,如下所示:
@Entity
public class Report {
@Id @GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "id")
private int id;
@Column(name = "descrizione")
private String descrizione = null;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getDescrizione() {
return descrizione;
}
public void setDescrizione(String descrizione) {
this.descrizione = descrizione;
}
}
和一个表到mysql数据库与自动增量pk。但是我不知道为什么只有当我启动web服务时自动增量才起作用。稍后,hibernate只覆盖最后一条记录,而不使用自动递增的主键创建新记录。
在application.properties中,我有以下配置:
spring.jpa.hibernate.ddl-auto=none
spring.datasource.url=jdbc:mysql://localhost:3306/civicsense?serverTimezone=UTC
spring.datasource.username=root
spring.datasource.password=AAAAAAA
我们会很感激你的帮助
2条答案
按热度按时间6bc51xsx1#
您需要更改:
@GeneratedValue(strategy = GenerationType.IDENTITY)
对于@GeneratedValue(strategy = GenerationType.AUTO)
在application.properties中使用:spring.jpa.hibernate.ddl-auto=update
pb3s4cty2#
首先,将int改为long。您可以省略这个策略,因为对于mysql
GenerationType.IDENTITY
与相同GenerationType.AUTO
相当于加上@GeneratedValue
.另外,您的问题可能是添加实体的方式。你可能想用
saveAndFlush()
在这种情况下,由于更改将在该命令中立即刷新到db,这可能会阻止您的问题,因为您的实际方法可能没有按时提交。