Hibernate使用受保护的默认构造函数失败

时间:2016-09-15 09:29:42

标签: java hibernate constructor

我原本希望Hibernate能够使用受保护的no-args构造函数实例化类,但是,我们得到了:org.hibernate.HibernateException: Could not instantiate resultclass: com.xxx.Installment

改变之后:

@VisibleForHibernate
protected Installment() {
}

为:

@VisibleForHibernate
public Installment() {
}

问题已得到解决。我们使用的Hibernate版本:3.6.10.Final。

为了让Hibernate工作,是否有任何关于no-args构造函数必须public而不是protected的规则?

1 个答案:

答案 0 :(得分:0)

来自参考资料

https://docs.jboss.org/hibernate/orm/3.5/reference/en/html/persistent-classes.html#persistent-classes-pojo-constructor

  

所有持久化类必须具有默认构造函数(可以是非公共的),以便Hibernate可以使用Constructor.newInstance()实例化它们。建议您使用默认构造函数,至少在Hibernate中生成运行时代理的包可见性。

自从Hibernate用户反射以来,Hibernate要求构造函数应该是公共的,或者应该具有包级别的可见性。