【发布时间】:2013-07-04 07:45:55
【问题描述】:
onSave() 事件在实体保存之前发生,因此实体没有它的 id。有什么方法可以在保存后获取实体 ID?
【问题讨论】:
标签: java hibernate interceptor
onSave() 事件在实体保存之前发生,因此实体没有它的 id。有什么方法可以在保存后获取实体 ID?
【问题讨论】:
标签: java hibernate interceptor
根据 EmptyInterceptor 的 JavaDocs,onSave 方法接收“id”作为参数。看这里:http://docs.jboss.org/hibernate/orm/3.5/javadoc/org/hibernate/EmptyInterceptor.html
因此,您可以使用该 id 值。
我假设您已经创建了类似于此处解释的方式的拦截器:http://docs.jboss.org/hibernate/orm/3.3/reference/en/html/events.html
【讨论】:
就我而言,我需要填写实体。当我们将实体添加到集合(例如 HashSet)时,该实体会在拦截器生命周期中更改自己的状态。所以,我只是将实体添加到 HashSet,然后在 afterTransactionCompletion() 中从 HashSet 中获取实体。实体已完全填充并具有 ID。
【讨论】: