我在更新作为@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