1

我正在尝试使用org.hibernate.Interceptor.instantiate()拦截实例化(显然)并使用默认构造函数以外的构造函数手动实例化特定对象。如果要阅读此方法的 JavaDoc,实际上,这似乎是 Hibernate 公开此类事情的全部意义所在。

但是,我得到的只是实体名称、EntityModeSerializable标识符。因此,除非我的目标是调用一个将 ID 作为其唯一参数的构造函数,否则我是 SOL。如果这个方法只给了我足够的信息来调用另一个(非常具体的)构造函数,为什么还要存在这个方法呢?我应该如何检索其他实体属性的值?

编辑:显然,经过更多的工作和研究,我想做的事情是不可能的。所以我只是接受了迈克的回答并收工。

4

1 回答 1

2

调用实例化拦截器以允许您提供自定义机制,以便在设置其任何属性之前实例化新的映射实体。由于此实体在调用此拦截器之前不存在,因此不可能设置其任何属性。Hibernate 在生命周期的这一点上唯一知道的值是实体的类型和将要分配的 ID。您将使用此拦截器根据例如配置设置来更改实例实例化,而不是根据实例化后设置的属性值。

你想用这个来完成什么?

于 2013-01-21T18:30:47.107 回答