使用双向映射时复制对象(OneToMany和ManyToOne)

时间:2018-10-17 12:58:05

标签: jpa orm many-to-many one-to-many

我有2种模型: MySpringSecurityUser Authorities

MySpringSecurityUser有一个Collection字段,其中包含 Authorities 对象。

@Entity
@Table(name="users")
public class MySpringSecurityUser implements UserDetails, Serializable{
   ...
    @OneToMany(fetch = FetchType.EAGER)
    @JoinTable
      (
          name="users_authorities",
          joinColumns={ @JoinColumn(name="id_user")},
          inverseJoinColumns={ @JoinColumn(name="id_authority") }
      ) 
    private Collection<Authorities> authorities;    
...
}

这是我的数据库

enter image description here

使用此代码,一切正常。

如果我也尝试映射Authorities对象,为了使该字段包含MySpringSecurityUser对象,我将在MySpringSecurityUser.authorities中获得 duplicate 值。

MySpringSecurityUser.authorities 内部,我从联接表 users_authorities 中还获得了绑定到其他用户(具有不同的 id_user 从当前版本开始)

@Entity
@Table(name="authorities")
public final class Authorities implements GrantedAuthority{
   ...
  @ManyToOne(fetch=FetchType.EAGER)
    @JoinTable
    (
            name="users_authorities",
            joinColumns={ @JoinColumn(name="id_authority",insertable = false,
                      updatable = false)},
            inverseJoinColumns={ @JoinColumn(name="id_user",insertable = false,
                      updatable = false) }
    )   
    private MySpringSecurityUser mySpringSecurityUser;   
   ...
}

我的错误是什么? 谢谢您的帮助

0 个答案:

没有答案