2
禁用发电机目前,当我尝试插入新记录,我得到一个错误:如何在数据库触发器创建ID
[错误] 5月12日/ 11_09:44:20.54 [org.hibernate.event.def .AbstractFlushingEventListener] - 无法使数据库状态与会话同步
Db2触发器生成的ID需要保留以支持传统应用程序。我怎样才能配置hbm.xml不生成ID?
禁用发电机目前,当我尝试插入新记录,我得到一个错误:如何在数据库触发器创建ID
[错误] 5月12日/ 11_09:44:20.54 [org.hibernate.event.def .AbstractFlushingEventListener] - 无法使数据库状态与会话同步
Db2触发器生成的ID需要保留以支持传统应用程序。我怎样才能配置hbm.xml不生成ID?
我不确定你使用的是什么版本的Hibernate,但是Hibernate目前支持通过一个名为select的特殊生成器来获取触发器生成的ID。
总之,你可以将此发电机添加到您的ID列,然后引用你可以用它来获取触发生成的ID如下自然键:
<id name="id" type="long" column="person_id">
<generator class="select">
<param name="key">socialSecurityNumber</param>
</generator>
</id>
如果你的映射已经有一个天然 - 键输入定义,那么你甚至不需要为发生器指定参数key
。
这个特定生成器的一个问题是,你只能使用一个实体属性作为它的选择键。如果您需要通过复合键进行选择,那么您必须为此创建自己的发生器。
您可以扩展org.hibernate.id.SelectGenerator
或其父母之一,然后通过多列实现选择。然后,您只需将上述生成器条目的class
属性替换为新生成器的全限定类名。