如何在hibernate保存之前获取对象的生成ID。这是代码:
@Id
@SequenceGenerator(name="MY_SEQ", sequenceName="MY_SEQ", allocationSize=1 )
@GeneratedValue(strategy=GenerationType.SEQUENCE, generator="MY_SEQ")
private long id;
如果不使用currval选择('MY_SEQ'),我有什么方法可以做到这一点吗?
由于
答案 0 :(得分:5)
使用JPA @SequenceGenerator以及旧版Hibernate标识符,无论如何都会为SequenceHiLoGenerator提供HI/LO optimization algorithm。
但对于Sequences,实际标识符值应用during flush-time,因此在会话刷新(手动刷新或提交时刷新)之前,您不会获得实际值。
对于IDENITY生成器,您可以获得在刷新之前生成的标识符,但是这会禁用JDBC批处理,因此它也不是银弹。
如果您想要完全控制,则需要使用指定的标识符,UUID surrogate keys非常适合这项工作。