有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java双向多对多JPA

我和JPA相处得很艰难,希望有人能帮助我

我有三张桌子:

  • Rol(CPE_Rol)
  • TipoUsuario(GTV_TIPOUSU)
  • RolTipoUsuario(CPE_ROLTUS-联接表)

罗尔。爪哇

@JoinTable(name = "CPE_ROLTUS", joinColumns = {
    @JoinColumn(name = "CPE_ROLTUS_TIPOUSU_ID", referencedColumnName = "GTV_TIPOUSU_ID")}, inverseJoinColumns = {
    @JoinColumn(name = "CPE_ROLTUS_ROL_ID", referencedColumnName = "CPE_ROL_ID")})
@ManyToMany(fetch = FetchType.LAZY, cascade={CascadeType.REFRESH})
private List<TipoUsuario> tipoUsuarioList;

蒂普苏亚里奥。爪哇

@ManyToMany(mappedBy = "tipoUsuarioList", fetch = FetchType.LAZY, cascade={CascadeType.REFRESH})


private List<Rol> rolesDefault;

由于某种原因,rolesDefault从未填满,我想知道我是否遗漏了什么

提前谢谢

丹尼尔


共 (1) 个答案

  1. # 1 楼答案

    我的猜测是,当你创建对象时,你没有设置关系的双方。您必须在JPA中保持双向关系。添加到一侧时,也将添加到另一侧

    看,, http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Object_corruption.2C_one_side_of_the_relationship_is_not_updated_after_updating_the_other_side

    您很可能启用了缓存,或者正在使用同一个EntityManager,因此在读取时可以从缓存中获取对象。您也可以禁用共享缓存或刷新对象,但修复持久化代码是最好的

    否则,启用finest日志记录并查看执行了什么SQL