实体类必须具有非争论的构造函数

时间:2015-04-25 09:36:44

标签: java hibernate jpa eclipselink entitymanager

我正在学习JPA,所以在JPA BLOG Vogella 1.2 Entity Heading学习期间,我遇到了一句话:

  

所有实体类必须定义主键,必须具有非arg   构造函数和/或不允许是最终的

我无法理解这一行。我们是否需要专门编写一个非争论的构造函数,因为默认的非争论构造函数总是由类继承。

它们是什么意思,不允许是最终的,这是否意味着我们总是可以扩展实体类?如果是这样,为什么这种强迫,为什么它不能是最终的

1 个答案:

答案 0 :(得分:2)

默认情况下,如果类中没有定义与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供应商创建代理以延迟获取行,这最终将限制您的性能调整选项。因此,根据您的使用案例,您会看到您的课程可能/可能不是最终的。