Java Hibernate未使用Oracle 12c为自动增量列返回正确的值

Java Hibernate未使用Oracle 12c为自动增量列返回正确的值,java,oracle,hibernate,Java,Oracle,Hibernate,我正在使用Hibernate和Oracle 12c。 执行保存操作后,hibernate未返回主键(自动递增)的正确值,该主键在DB中具有序列。 在下面的代码中,UserId列(Auto increment)有一个以DB为单位的序列, 在DB中执行保存操作后,值为81,但在hibernate中返回值为3441。(值仅为示例) 我的代码: ` ` 注意:相同的代码可以与其他数据库一起正常工作。Oracle不像其他一些数据库那样处理strategy=GenerationType.AUTO。您需要将该

我正在使用Hibernate和Oracle 12c。 执行保存操作后,hibernate未返回主键(自动递增)的正确值,该主键在DB中具有序列。 在下面的代码中,UserId列(Auto increment)有一个以DB为单位的序列, 在DB中执行保存操作后,值为81,但在hibernate中返回值为3441。(值仅为示例) 我的代码: `

`


注意:相同的代码可以与其他数据库一起正常工作。

Oracle不像其他一些数据库那样处理
strategy=GenerationType.AUTO
。您需要将该注释替换为以下两种注释

@GeneratedValue(strategy=GenerationType.AUTO, generator="my_entity_seq_gen")
@SequenceGenerator(name="my_entity_seq_gen", sequenceName="MY_ENTITY_SEQ")

也解释了。

表是如何定义的?感谢您的回复,在上述更改之后,同样的问题也在发生。@Pramod-您说“在上述更改之后…”是否意味着您也在Oracle中创建了“我的实体”序列?请参见我用DB中的序列名重命名了“MY_ENTITY_SEQ”。
@GeneratedValue(strategy=GenerationType.AUTO, generator="my_entity_seq_gen")
@SequenceGenerator(name="my_entity_seq_gen", sequenceName="MY_ENTITY_SEQ")