@OneToMany関係のセットの一部として作成されたオブジェクトの更新に問題があります。@OneToMany関係の一部として作成されたアイテムを更新します。
それらの家に住んでいる家屋や人々からなる、私は非常に単純なドメインモデルを持っていると仮定します。
ハウス:
@Entity
public class House {
@Id
@GeneratedValue
private Long id;
@OneToMany(mappedBy = "person", cascade = CascadeType.ALL, orphanRemoval = true)
private Set<Person> persons;
public void addPerson(Person p) {
persons.add(p);
public Set<Person> getPersons() {
return persons;
}
}
パーソン:
@Entity
public class Person {
@Id
@GeneratedValue
private Long id;
@ManyToOne
private House house;
}
私は」私は、SpringブートJPAリポジトリをHouseに、HouseServiceをメソッドに持っています。
@Transactional
public Person addPerson(Long houseId) {
House house = houseRepository.findOne(houseId);
Person person = new Person();
house.addPerson(person);
houseRepository.save(house);
return person;
}
上記のメソッドを呼び出すと、新しいPersonが作成され、そのPersonはデータベースに保持されますが、返されたPersonインスタンスにはIDセットがありません。つまり、addPerson()。getId()はnullを返します。永続化されたバージョンのIDを持つ人のインスタンスを返すサービスを取得できますか?
サービスのaddPerson()メソッドを使用して作成されたPersonに変更を加え、その変更を後の段階で保持できるようにします。
多分あなたは人を持つことができますが、人はいない人はいません – Tokazio
残念ですが、私はコードから外しました - 双方向の関係があり、これを表示するための質問が更新されました。ありがとう。 – bobsyouruncle
もカスケードありますか? – Tokazio