だから私は2つのエンティティを持っています:
Person.java
@Entity
@Table(name = "persons")
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@OneToMany(mappedBy="person", cascade = CascadeType.REMOVE)
@JsonIgnoreProperties("person")
private Set<Address> addresses;
//getters and setters
}
アドレス.java
@Entity
@Table(name = "addresses")
public class Address {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@NotNull
@ManyToOne
@JoinColumn(name = "person_id", nullable = false)
@JsonIgnoreProperties("addresses")
private Person person;
//getters and setters
}
その後、コードで personDb オブジェクト (既にデータベースに保存されています) を作成し、Address を追加します。
Address address = new Address();
address.setPerson(personDb);
address = addressRepository.save(address);
そして今、私は person オブジェクトが添付されたアドレスオブジェクトを持っていますが、私の personDb にはまだアドレスが添付されていません。もう一度データベースから取得しようとしても:
personRepository.findOne(personDb.getId());
アドレスを設定する必要がある場所に null があります。また、 Person クラスの注釈を次のように変更してみました。
@OneToMany(mappedBy="person", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
または CascadeType を ALL に変更しますが、何も役に立ちません。アドレスがデータベースに追加された後、自分の personDb オブジェクトにアドレスをロードするにはどうすればよいですか?