我很难与JPA合作,希望有人可以帮助我。
我有3张桌子:
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永远不会被填满,我想知道我是否遗漏了什么。
提前致谢。
丹尼尔
答案 0 :(得分:5)
我的猜测是,当您创建对象时,您没有设置关系的两侧。您必须在JPA中保持双向关系。当您添加到一侧时,也会添加到另一侧。
您很可能已启用缓存,或者正在使用相同的EntityManager,因此在读取时您将从缓存中获取对象。您也可以禁用共享缓存,或刷新对象,但最好修复持久代码。
否则,启用最好的登录并查看执行的SQL。