我在hbm.xml中引入了自定义id生成器。但是,有时候对于某些用例,我需要在我的表中保留明确的ID,我不希望触发自定义Id生成器。有没有办法做到这一点?或者是否有任何选项可以在运行时使用多个自定义ID生成器并在它们之间切换?
答案 0 :(得分:1)
查看IdentifierGenerator.generate(SessionImplementor session, Object object)
的javadoc:
参数:
会话 -
对象 - 实体或顶级 正在生成id的集合
返回:
a 新标识符
也许一个解决方案可以检查@Id
带注释的字段并查看字段是否是手动值,或者让你的域对象实现自定义接口并编写一个提取器类以某种方式从持久化对象中提取信息(反射,手动编写代码或其他解决方案)
答案 1 :(得分:1)
如果您可以自己实现逻辑,以便在想要使用生成器时以及想要跳过它时,您应该可以使用@PrePersist注释来执行此操作。请参阅以下帖子:
Hibernate: Bypass generated ID in some case
希望这有帮助。
萨拉