gpt4 book ai didi

java - 使用@Embedded 在数据库中 hibernate 空值

转载 作者:行者123 更新时间:2023-11-30 10:47:35 24 4
gpt4 key购买 nike

你好,我正在学习 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/

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