我正在使用Spring MVC和JPA,而且我不知道如果没有在ForEach中更新实体,它是如何保持实体的。
@Transactional
public void save(House house, List<Long> room) {
for (Long id : room) {
house.setRoom(new Room(id));
houseDao.save(house);
}
}
public void save(House house) {
entityManager.persist(house);
}
我想在循环的每个关系中保留一个只会改变房间信息的新对象。
答案 0 :(得分:0)
假设House有一套/房间清单。
是否已为House类中的房间定义了CascadeType.PERSIST?
class House {
@OneToMany(mappedBy = "whatever", cascade = { CascadeType.MERGE, CascadeType.REMOVE, CascadeType.PERSIST })
private List<Room> rooms;
}
现在您的代码变为:
@Transactional
public void save(House house, List<Long> room) {
for (Long id : room) {
house.getRooms().add(new Room(id));
}
houseDao.save(house);
}
public void save(House house) {
entityManager.persist(house);
}