Java Hibernate拦截器。实例化()

Java Hibernate拦截器。实例化(),java,hibernate,interceptor,Java,Hibernate,Interceptor,我试图使用org.hibernate.Interceptor.instantiate()拦截实例化(显然),并使用默认构造函数以外的构造函数手动实例化特定对象。如果要为这个方法读入JavaDoc,事实上,这似乎就是Hibernate公开这样一个东西的全部要点 但是,我得到的只是实体名称、EntityMode和可序列化的标识符。所以,除非我的目标是调用一个以ID作为唯一参数的构造函数,否则我就是SOL。如果这个方法只给我足够的信息来调用另一个(非常具体的)构造函数,为什么会存在这个方法?我应该如何

我试图使用
org.hibernate.Interceptor.instantiate()
拦截实例化(显然),并使用默认构造函数以外的构造函数手动实例化特定对象。如果要为这个方法读入JavaDoc,事实上,这似乎就是Hibernate公开这样一个东西的全部要点

但是,我得到的只是实体名称、
EntityMode
可序列化的标识符。所以,除非我的目标是调用一个以ID作为唯一参数的构造函数,否则我就是SOL。如果这个方法只给我足够的信息来调用另一个(非常具体的)构造函数,为什么会存在这个方法?我应该如何检索其他实体属性的值


编辑:显然,在做了更多的工作和研究之后,我想做的是不可能的。所以我接受了Mike的回答,今天到此为止。

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


你想用它实现什么?

我只是想找到一些方法来绕过Hibernate的天真要求,即所有对象都提供一个用于实例化的默认构造函数。一个假定的OO框架会违反OOP(封装)的核心原则之一,迫使您为所有属性提供公共设置器(我知道;私有设置器;但这是原则!),这似乎很奇怪。反射允许你调用任何你想要的构造函数(像Spring这样的框架就是这么做的),所以他们调用没有参数的
Class.newInstance()
,对他们来说只是设计上的失败,而不是Java固有的局限性。