我正在学习JPA,所以当我在JPA博客Vogella 1.2实体标题上学习时,我碰到了一条线,上面写着:
所有实体类都必须定义主键,必须具有非arg构造函数,或者不允许成为最终对象。
我听不懂这句话。我们是否需要专门编写非论证构造函数,因为默认的非论证构造函数总是由类继承的。
不允许成为最终类意味着什么,这是否意味着我们总是可以扩展实体类?如果是的话,为什么这是强制性的,为什么它不能是最终的?
发布于 2015-04-25 01:45:08
默认情况下,当类中没有定义与JPA无关的构造函数时,就会得到非arg构造函数。是的,如果要定义构造函数,则必须定义任何arg构造函数,如下所示:
public class Student {
public Student() {}//default ctor which is needed by JPA to convert row from DB to java object
public Student(int id) {..}//ctor which accepts one arg
}
最后一堂课意味着你不能做子类。与Hibernate一样,JPA供应商创建代理来懒散地获取行,这将最终限制性能调优的选项。因此,您可以看到,您的类可能/可能不是最终的,这取决于您的用例。
https://stackoverflow.com/questions/29863480
复制相似问题