我在更新作爲@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 House的JPA版本庫和一個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實例沒有設置ID(即,addPerson().getId()返回null)。我可以獲得服務以返回具有持久版本ID的個人實例嗎?
我想對使用服務的addPerson()方法創建的Person進行更改,並且能夠在稍後階段保留這些更改。
也許你應該有一個雙向關係房子可以有人但沒有人住宅 – Tokazio
對不起我把它留在了代碼之外 - 有一個雙向的關係,我已經更新了這個問題。謝謝。 – bobsyouruncle
與級聯嗎? – Tokazio