我使用的是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);
}
我希望在循环的每个环节中都保留一个新对象,该对象只会更改房间的信息。
假设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);
}