如何在 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') 上的选择的情况下做到这一点?
谢谢
最佳答案
使用 JPA @SequenceGenerator 以及遗留的 Hibernate 标识符将为您提供 SequenceHiLoGenerator适用于 HI/LO optimization algorithm无论如何。
但对于序列,应用实际标识符值 during flush-time ,因此在刷新 session (手动刷新或提交时刷新)之前您不会获得实际值。
对于 IDENITY 生成器,您会在刷新之前获得生成的标识符,但这会禁用 JDBC 批处理,因此它也不是 Elixir 。
如果你想要完全控制,你需要求助于分配的标识符和UUID surrogate keys非常适合这份工作。
关于java - 在 hibernate 保存对象之前从序列中获取生成的 id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27489595/