我原本希望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
的规则?
答案 0 :(得分:0)
来自参考资料
所有持久化类必须具有默认构造函数(可以是非公共的),以便Hibernate可以使用Constructor.newInstance()实例化它们。建议您使用默认构造函数,至少在Hibernate中生成运行时代理的包可见性。
自从Hibernate用户反射以来,Hibernate要求构造函数应该是公共的,或者应该具有包级别的可见性。