OneToOne 关系 - Id 应该在哪里

问题描述 投票:0回答:1

有很多关于 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?

hibernate mapping entity hibernate-mapping one-to-one
1个回答
0
投票

添加

address.setPerson(person);
。因为地址保存的是一个人的 ID,而不是相反。

© www.soinside.com 2019 - 2024. All rights reserved.