我在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();
`
注意:相同的代码可以与其他数据库一起使用。
答案 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。