-1

我在 hbm.xml 中引入了一个自定义 id 生成器。但是,有时对于某些用例,我需要在我不希望触发自定义 ID 生成器的表中保留显式 ID。有没有办法做到这一点?或者是否有任何选项可以拥有多个自定义 id 生成器并在运行时在它们之间切换?

4

2 回答 2

1

如果您可以自己实现逻辑,以便在您想要使用生成器时以及想要跳过它时,您应该能够使用 @PrePersist 注释来执行此操作。请参阅以下帖子:

Hibernate:在某些情况下绕过生成的 ID

希望这可以帮助。

莎拉

于 2013-09-12T03:04:27.117 回答
1

查看 javadoc 的IdentifierGenerator.generate(SessionImplementor session, Object object)

参数
会话-
对象-正在为其生成 id 的实体或顶级集合
返回
新标识符

也许解决方案可以检查带@Id注释的字段并查看字段是否被手动赋值,或者让您的域对象实现自定义接口并编写提取器类以某种方式从持久对象中提取信息(反射、手动编写的代码或其他解决方案)

于 2013-09-06T11:16:26.893 回答