虽然我没有使用过Spring,但我在一个项目中使用了Hibernate,该项目具有必须通过工厂方法或通过多个参数构造函数实例化的类。
您可以通过Interceptor进行此操作,Interceptor是侦听几个关键的hibernate事件的类,例如何时需要实例化对象或何时加载对象。
要使Hibernate使用您自己的实例化对象的方法,请执行以下操作:
public class MyInterceptor extends EmptyInterceptor { public Object instantiate(String entityName, EntityMode entityMode, Serializable id) { if(entityName.equals(Foo.class.getName()) return Foo.create(); return null; }}我有点惊讶您遇到了Hibernate无法使用非可见构造函数实例化对象的问题,考虑到它可以通过反射解决,并且我的项目中没有这个问题(实际上所有类都不具有可见性)构造函数)。可能与Spring有关。检查一下您正在使用的hibernate版本。



