Hibernate没有为Oracle 12c返回自动增量列的正确值

时间:2017-07-03 13:05:49

标签: java oracle hibernate

我在Oracle 12c上使用Hibernate。 执行保存操作后,休眠不返回在DB中具有序列的主键(自动增量)的正确值。 在下面的代码中,UserId列(自动增量)在DB中有一个序列, 保存操作后,DB值为81,但休眠中的返回值为3441.(值仅为示例) 我的代码: `

User user = new User ();
User.setUserName(userName);
User.setRoleId(roleId);
getHibernateTemplate().save(User);
int userId = User.getUserId();

`

注意:相同的代码可以与其他数据库一起使用。

1 个答案:

答案 0 :(得分:1)

Oracle不像其他dbs一样处理strategy = GenerationType.AUTO。您需要使用类似这两个的

替换该注释
@GeneratedValue(strategy=GenerationType.AUTO, generator="my_entity_seq_gen")
@SequenceGenerator(name="my_entity_seq_gen", sequenceName="MY_ENTITY_SEQ")

也解释了here