我知道没有参数的构造函数必须在Entity中。但最近,我也看到了带参数的构造函数。我不明白,为什么可能需要它以及它是如何工作的。
答案 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()方法,此方法仅适用于默认构造函数。如果你提供任何参数化构造函数,我们也必须提供默认构造函数。