我试图使用org.hibernate.Interceptor.instantiate()来拦截实例化(很明显),并使用非默认值的构造函数手动实例化特定对象。如果要读取此方法的JavaDoc,实际上,这似乎是Hibernate暴露这种事情的全部要点。
但是,给我的只是实体名称、EntityMode和Serializable标识符。因此,除非我的目标是调用一个构造函数,该构造函数将ID作为其唯一参数,否则我就是SOL。如果这个方法只给我足够的信息来调用另一个(非常具体的)构造函数,它为什么会存在?如何检索其他实体属性的值?
编辑:很显然,在做了更多的工作和研究之后,我想要做的事情是不可能的。所以我接受了迈克的回答,就这样过了一天。
发布于 2013-01-21 18:30:47
调用实例化拦截器是为了允许您在设置新的映射实体属性之前提供一个自定义机制。由于该实体在调用此拦截器之前不存在,因此不可能设置它的任何属性。Hibernate在生命周期的此时知道的唯一值是实体的类型和将要分配的ID。您将使用此拦截器根据例如配置设置来更改实例实例化,而不是根据实例化后将设置的属性值来更改实例实例化。
你想用这个来完成什么?
https://stackoverflow.com/questions/14442807
复制相似问题