を添加し、だから私は2つのエンティティがあります。更新1対多の関係は
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
}
Address.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 = new Address();
address.setPerson(personDb);
address = addressRepository.save(address);
私はpersonオブジェクトに接続されたアドレスオブジェクトを持っていますが、私のpersonDbにはまだアドレスがありません。もう一度データベースから取得しようとしても:
personRepository.findOne(personDb.getId());
私はどこにアドレスを設定する必要がありますか?また、私はこのような何かにPersonクラスの私の注釈を変更してみました:ALLへ
@OneToMany(mappedBy="person", fetch = FetchType.EAGER, cascade = CascadeType.REMOVE)
またはCascadeTypeを変更するが、何も助けません。私のpersonDbオブジェクトがデータベースに追加された後、アドレスをロードするにはどうすればよいですか?