有很多关于 oneToOne 或 OneToMany 的问题,但我无法得到答案为什么我的应用程序不保存 id。我有两个实体:
@Entity
Person {
private String id;
private String Name;
...
}
和:
@Entity
Address{
private String id;
private String city;
...
}
现在我想建立一对一的关系。 因此,在包含地址的表中,我添加了 ID_PERSON 列,然后 个人实体:
@Entity
Person {
...
@OneToOne(mappedBy = "person", fetch = FetchType.LAZY, cascade = CascadeType.All)
private Address address;
}
并在地址中:
@Entity
Address{
...
@OneToOne
@JoinColumn(name = "ID_PERSON")
private Person person;
}
我想简单地制作repository.save(person)。之后,我在 PERSON_TABLE 中收到新记录,在 ADDRESS_TABLE 中收到新记录,但 ID_PERSON 列中的值为空。是否由于 Person 在保存后获取“id”而保存地址时 id 还不存在而导致? 我应该改变什么才能得到这样的结果:
public void save() {
Person person = new Person();
Address address = new Address();
addres.setCity("XYZ");
person.setName("ANY_NAME");
person.setAddress(address)
repository.save(person);
}
并记录在数据库中: PERSON_TABLE:ID:UUID111,名称:ANY_NAME,...
地址表:ID:UUID555,城市:XYZ,ID_PERSON:UUID111?
添加
address.setPerson(person);
。因为地址保存的是一个人的 ID,而不是相反。