java - @ManyToMany 和更新实体

标签 java spring many-to-many

我有 User 类,它有一些附加属性:

@Entity
@Table(name="\"user\"")
public class User implements UserDetails {
    private String username;
    private String password;
    @ManyToMany(fetch = FetchType.EAGER)
    private Collection<House> houses;
}

现在,如果我调用某种方法来更改其中一栋房屋(例如更改其名称属性),那么如果我调用:

User user = (User) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
user.getHouses(); <- value of name property in house is not updated

如何确保它始终更新?

最佳答案

我建议您将 @ManyToMany(fetch = FetchType.EAGER) 更改为 @ManyToMany(fetch = FetchType.LAZY)。因为 EAGER 会在您第一次调用它时立即获取对象,而使用 LAZY 则您拥有 id,并且您将按需获取,这意味着,使用惰性,您将从数据库中获取对象的最后状态。

关于java - @ManyToMany 和更新实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43605080/

相关文章:

java - Mybatis xml resultMap 存在集合和关联问题

java - 如何根据结果内部对象对 mongo 聚合查询进行排序

symfony1 - 在 Propel 中命名生成的函数

many-to-many - sqlalchemy:以多对多关系保留关联表中的列值

Django,在 self 类内的多对多关系中,我如何在ORM方面相互引用?

java - tomcat运行但404无错误返回

java - 使用具有大小的 Java OpenCV 库时出错

hibernate - 记录 Java Web 应用程序中的实体更改

java - 从另一个 DAO 调用一个 DAO?

java - GWT:如何计算碎片数量