为什么我们需要在实体中声明NOT空构造函数?

时间:2017-06-17 15:47:56

标签: java spring hibernate jpa constructor

我知道没有参数的构造函数必须在Entity中。但最近,我也看到了带参数的构造函数。我不明白,为什么可能需要它以及它是如何工作的。

2 个答案:

答案 0 :(得分:0)

对于hibernate实体,您应该提供至少一个没有参数的默认构造函数。如果你的实体有很多字段,只有几个是你的,你可以创建带有强制参数的构造函数/构造函数,但默认构造函数(没有参数)应该在实体中。

因为你实体它是一个普通的类,你不仅用于hibernate映射,还用于其他组件。

你也可以添加静态工厂方法来轻松创建类。

for exaple:

@Entity
class User{
//mandatory fields
private Long id;
private String userName;

//not mandatory fields:
private Date registrationDate;
private String nickName;

   public User(){//it's default constructor for hibernate entity creation 
   }

   public User( Long id ,String userName){ // you can create entity whenever when you want to create entity
....
   }
}

with User(Long id,String userName) - 如果需要User实例,则声明 你应该用必填字段创建它。

如果你有User()构造函数,很难理解哪些参数是强制性的

答案 1 :(得分:0)

在内部创建实体hibernate的实例使用newInstance()方法,此方法仅适用于默认构造函数。如果你提供任何参数化构造函数,我们也必须提供默认构造函数。