在ForEach中的事务上下文中持久化实体(Spring MVC+JPA)



我使用的是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);
}

最新更新