这对你来说可能听起来很愚蠢,但为什么我需要在我的 @Entity
中定义一个空的构造函数?
我看到的每个教程都说:每个实体都需要一个空的构造函数。
但是 Java 总是给你一个默认的不可见的空构造函数(如果你不重新定义一个的话)。
让我澄清一下。我对“需要”的理解是 _写_。
意思是:总是在你的实体中写一个空的构造函数。
例子:
@Entity
public class MyEntity implements Serializable {
@Id
private String str;
public MyEntity(){}
//here getter and setter
}
但是当你不重新定义它时,Java 总是给你这个空的构造函数(写另一个带参数的构造函数)。
在这种情况下,编写这个空的构造函数似乎毫无用处。
原文由 sliders_alpha 发布,翻译遵循 CC BY-SA 4.0 许可协议
需要一个空的构造函数来通过持久性框架的反射创建一个新实例。如果您不为该类提供任何带参数的额外构造函数,则不需要提供空构造函数,因为您默认获得一个。
您还可以使用如下所示的 @PersistenceConstructor 注释
如果您的项目中存在 Spring Data,则初始化您的实体。因此,您也可以避免使用空构造函数。