繁体   English   中英

双向多对多JPA

[英]Bi-directional Many to Many JPA

我在JPA遇到困难,希望有人可以帮助我。

我有3张桌子:

  • 角色(CPE_ROL)
  • TipoUsuario(GTV_TIPOUSU)
  • RolTipoUsuario(CPE_ROLTUS-联接表)

Rol.java

@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;

TipoUsuario.java

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


private List<Rol> rolesDefault;

由于某些原因,RoleDefault从未被填充,我想知道是否丢失了某些东西。

提前致谢。

丹尼尔

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

参见http://en.wikibooks.org/wiki/Java_Persistence/Relationships#Object_corruption.2C_one_side_of_the_relationship_is_not_update__after_updating_the_other_side

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

否则,启用最好的登录并查看执行了什么SQL。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM