【问题标题】:Persist an Entity in a Transactional Context in a ForEach (Spring MVC + JPA)在 ForEach (Spring MVC + JPA) 的事务上下文中持久化实体
【发布时间】:2014-09-22 18:07:46
【问题描述】:

我正在使用 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);
}

我想在循环的每一个领带中保持一个新对象,它只会改变房间的信息。

【问题讨论】:

    标签: java spring spring-mvc jpa


    【解决方案1】:

    假设 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);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-05-06
      • 2014-10-20
      • 1970-01-01
      • 1970-01-01
      • 2016-02-13
      • 2011-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多