Java 实体 - 为什么我需要一个空的构造函数?

新手上路,请多包涵

这对你来说可能听起来很愚蠢,但为什么我需要在我的 @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 许可协议

阅读 651
2 个回答

需要一个空的构造函数来通过持久性框架的反射创建一个新实例。如果您不为该类提供任何带参数的额外构造函数,则不需要提供空构造函数,因为您默认获得一个。

您还可以使用如下所示的 @PersistenceConstructor 注释

@PersistenceConstructor
public Movie(Long id) {
    this.id = id;
}

如果您的项目中存在 Spring Data,则初始化您的实体。因此,您也可以避免使用空构造函数。

原文由 u6f6o 发布,翻译遵循 CC BY-SA 3.0 许可协议

但是 java 总是给你一个默认的不可见的空构造函数(如果你不重新定义一个的话)。

仅当您不在类中提供任何构造函数时,此声明才成立。如果您的类中提供了参数构造函数,那么 JVM 将不会添加无参数构造函数。

原文由 Juned Ahsan 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题