你好,我正在学习 Hibernate,目前我正在尝试使用 @Embedded 注释,但是我从我的数据库中的 @Embeddable 对象中得到了空值。
代码如下:
@Entity
public class Employee {
@Id
@GeneratedValue
private int id;
private String firstName;
private String lastName;
private double salary;
@Embedded
private Adress adress;
public Adress getAdress() {
return adress;
}
public void setAdress(Adress adress) {
this.adress = adress;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getFirstName() {
return firstName;
}
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getLastName() {
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
这就是我的 Employee 类,它包含来自 Adress.class 的 @embedded 字段 Adress 类来了:
@Embeddable
public class Adress {
private String locality;
private String streetNumber;
private String zipCode;
public String getLocality() {
return locality;
}
public void setLocality(String locality) {
this.locality = locality;
}
public String getStreetNumber() {
return streetNumber;
}
public void setStreetNumber(String streetNumber) {
this.streetNumber = streetNumber;
}
public String getZipCode() {
return zipCode;
}
public void setZipCode(String zipCode) {
this.zipCode = zipCode;
}
}
那是我的主课:
public class Main {
public static void main(String[] args) {
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("myDatabase");
EntityManager entityManager = entityManagerFactory.createEntityManager();
Employee employee = new Employee();
Adress adress = new Adress();
adress.setLocality("New York");
adress.setZipCode("55-5555");
adress.setStreetNumber("55");
employee.setFirstName("Andy");
employee.setLastName("Cole");
employee.setSalary(3333);
entityManager.getTransaction().begin();
entityManager.persist(employee);
entityManager.getTransaction().commit();
entityManager.close();
entityManagerFactory.close();
}
}
因此与类 Employee 相关的字段毫无问题地进入数据库,但是与类 Adress 相关的字段被设置为空。我想让它们作为 setValues。在此先感谢大家。
最佳答案
您缺少 setAddress 调用
public class Test {
public static void main(String[] args) {
EntityManagerFactory entityManagerFactory = Persistence.createEntityManagerFactory("myDatabase");
EntityManager entityManager = entityManagerFactory.createEntityManager();
Employee employee = new Employee();
Adress adress = new Adress();
adress.setLocality("New York");
adress.setZipCode("55-5555");
adress.setStreetNumber("55");
employee.setFirstName("Andy");
employee.setLastName("Cole");
employee.setSalary(3333);
employee.setAdress(adress);
entityManager.getTransaction().begin();
entityManager.persist(employee);
entityManager.getTransaction().commit();
entityManager.close();
entityManagerFactory.close();
}
}
关于java - 使用@Embedded 在数据库中 hibernate 空值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36150254/