gpt4 book ai didi

java - 使用 hibernate 时在 POJO 中使用构造函数有哪些限制?

转载 作者:太空宇宙 更新时间:2023-11-04 06:10:48 25 4
gpt4 key购买 nike

我正在尝试一个简单的 hibernate 填充数据库示例。有两个POJO的Employee和Address。当我尝试使用带有参数的 Employee 和 Address 构造函数来创建两个实例时,抛出了错误 could not get constructor for org.hibernate.persister.entity.singletableentitypersister ,但属性访问器方法工作正常。为什么我收到错误?

好吧,因为我现在没有堆栈跟踪,我将重新表述我的问题,属性访问器方法是否比 hibernate 中的构造函数更受欢迎?

员工 POJO:

package many2one;

public class Employee {

public int id;
public String firstName;
public String lastName;
public int salary;
public Address address;

public Employee(){}
public Employee(String firstName,String lastName,int salary,Address address){
this.firstName = firstName;
this.lastName = lastName;
this.salary = salary;
this.address = address;
}

public int getId(){
return id;
}

public void setId(int id){
this.id = id;
}

public String getFirstName(){
return firstName;
}

public void setFirstName(String fname){
this.firstName = fname;
}

public String getLastName(){
return lastName;
}

public void setLastName(String lname){
this.lastName = lname;
}

public int getSalary(){
return salary;
}

public void setSalary(int salary){
this.salary = salary;
}

public Address getAddress(){
return address;
}

public void setAddress(Address address){
this.address = address;
}
@Override
public String toString(){
return id+","+firstName+","+lastName+","+salary+","+address.getStreetName()+","+address.getCityName()+","+address.getStateName()+","+address.getZipcode();
}

}

地址POJO:

package many2one;

public class Address {
public int id;
public String streetName;
public String cityName;
public String stateName;
public String zipcode;

public Employee employee;

public Address(){

}

public Address(String sname,String cname,String statename,String zipcode){
this.streetName = sname;
this.cityName = cname;
this.stateName = statename;
this.zipcode = zipcode;
}

public int getId(){
return id;
}

public void setId(int id){
this.id = id;
}

public String getStreetName(){
return streetName;
}

public void setStreetName(String streetname){
this.streetName = streetname;
}

public String getCityName(){
return cityName;
}

public void setCityName(String cname){
this.cityName = cname;
}

public String getStateName(){
return stateName;
}

public void setStateName(String statename){
this.stateName = statename;
}

public String getZipcode(){
return zipcode;
}

public void setZipcode(String zipcode){
this.zipcode = zipcode;
}

public Employee getEmployee(){
return employee;
}

public void setEmployee(Employee employee){
this.employee = employee;
}

}

`

最佳答案

您的类应该有一个不带任何参数的默认公共(public)构造函数。这是使用 Hibernate 时构造函数的唯一限制。

至于异常(exception)情况,您可能缺少某个字段的 setter ,或者 setter 不遵循 Hibernate 期望的约定。但只有提供完整的堆栈跟踪才能确认这一点。

are property accessor methods preferred over constructors in hibernate?

你所说的首选是什么意思?如果您的意思是属性方法是可选的,那么答案是否定的。 (这可能是首先出现异常的原因之一)

关于java - 使用 hibernate 时在 POJO 中使用构造函数有哪些限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28763142/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com