rdj*_*dj7 4 java post hibernate jpa spring-data-jpa
我正在使用以下代码来定义MyEntity,
@Entity
@Table(name = "MY_TABLE")
public class MyEntity {
@Id
@GeneratedValue(strategy=GenerationType.AUTO)
@Column(name = "MY_TABLE_ID")
private Integer myTableId;
@Column(name = "MY_TABLE_NM")
private String myTableName;
//Getters Setters
}
Run Code Online (Sandbox Code Playgroud)
对于POST我的应用程序启动后的第一次,我创建MyEntity一切正常,MY_TABLE_ID从 1 开始并按预期工作。
我的问题是,如果有人在我做我之前手动插入数据,POST那么我会得到重复的键异常,因为myTableId输入为 1 已经存在。
我的主要问题是我无法创建database sequence用于GenerationType.SEQUENCEnow 解决此问题,因为现在无法更改数据库。我尝试了 的各种组合GenerationType,TableGenerator但我无法成功解决它。
设置initialValue更大的数字以避免重复值可以暂时解决我的问题,但我也无法做到。
如果有人可以帮助我initialValue与AUTO,或给我不数据库更改一些其他更好的解决方案将是巨大的:)
作为MY_TABLE_ID标识列,以下注释将起作用。
@Entity
@Table(name = "MY_TABLE")
public class MyEntity {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY) // <-- IDENTITY instead of AUTO
@Column(name = "MY_TABLE_ID")
private Integer myTableId;
@Column(name = "MY_TABLE_NM")
private String myTableName;
//Getters Setters
}
Run Code Online (Sandbox Code Playgroud)
事务提交后,标识列将自动分配一个值。您不必为标识列设置任何值,因为分配值是数据库的工作。因此,您也不需要考虑任何初始值(对于标识列完全忘记它们)
| 归档时间: |
|
| 查看次数: |
5255 次 |
| 最近记录: |