我正在使用hibernate实体 - 和它的序列生成器。
我的数据库是Oracle 12c。
在我的序列生成器中 - 它获取已存在于表中的值。
我试着寻找问题 - 找到一个类似的线程qazxsw poi
但它仍然无济于事。面临的问题是 - 它有时会工作,并且有时不起作用
以下是我的代码片段 -
Hibernate sequence nextVal resolved but not used (Oracle)
非常感谢,谢谢你:)
根据Oracle文档,应将@SequenceGenerator添加到字段中,而不是添加到类中:
@Entity
@Table(name="TABLE_NAME", schema = "SCHEMA")
@SequenceGenerator(name="TABLE_ID_SEQ_GEN", sequenceName="SCHEMA.TABLE_ID_SEQ",allocationSize=1)
public class ImportTransactionDataEntity {
@Id
@Column(name="TABLE_ID",unique=true,nullable=false)
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="TABLE_ID_SEQ_GEN" )
private int IDColumnPk;
像这样的东西:
https://docs.oracle.com/cd/E16439_01/doc.1013/e13981/cmp30cfg001.htm#BCGGHADG
这适合我。
试试这个
@Entity
@Table(name="TABLE_NAME", schema = "SCHEMA")
public class ImportTransactionDataEntity {
@Id
@Column(name="TABLE_ID",unique=true,nullable=false)
@GeneratedValue(strategy=GenerationType.SEQUENCE,generator="TABLE_ID_SEQ_GEN" )
@SequenceGenerator(name="TABLE_ID_SEQ_GEN", sequenceName="SCHEMA.TABLE_ID_SEQ",allocationSize=1)
private int IDColumnPk;
它存储在你的数据库中,这样最后一个数字是最后使用的id,所以不要担心丢失计数,因为数据库会为你做这个
@Entity
@Table(name="TABLE_NAME")
@SequenceGenerator(name="TABLE_ID_SEQ_GEN",sequenceName="TABLE_ID_SEQ",allocationSize=1)
public class ImportTransactionDataEntity {
@Id
@Column(name="TABLE_ID",unique=true,nullable=false)
@GeneratedValue(strategy=GenerationType.AUTO,generator="TABLE_ID_SEQ_GEN" )
private int IDColumnPk;