Hibernate与序列对象有问题 - 无法调用下一个val

问题描述 投票:0回答:3

我正在使用hibernate实体 - 和它的序列生成器。

我的数据库是Oracle 12c。

在我的序列生成器中 - 它获取已存在于表中的值。

我试着寻找问题 - 找到一个类似的线程qazxsw poi

但它仍然无济于事。面临的问题是 - 它有时会工作,并且有时不起作用

以下是我的代码片段 -

Hibernate sequence nextVal resolved but not used (Oracle)

非常感谢,谢谢你:)

java hibernate
3个回答
0
投票

根据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

这适合我。


0
投票

试试这个

@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;


0
投票

最后 - 我已经找到了一个我已经在使用oracle 12 C的解决方案 - 决定在桌面上使用Identity专栏。

注 - 但在Oracle 12c之前,标识列不可用。

我最终获得了更好的表现,但是这一点对我来说是松了一口气

enter image description here
© www.soinside.com 2019 - 2024. All rights reserved.