与同一实体的多对多关系

时间:2020-08-29 07:46:33

标签: java hibernate jpa

我有一个User实体,可以是ManagerClientManager可以有很多Clients,而Client可以有很多Managers

我试图这样映射User实体:


  @Id
  @GeneratedValue(strategy = AUTO)
  private UUID uuid;

  @ManyToMany
  @JoinTable(name = "managers_clients",
      joinColumns = {
          @JoinColumn(name = "clientUuid", referencedColumnName = "uuid", nullable = false)},
      inverseJoinColumns = {
          @JoinColumn(name = "managerUuid", referencedColumnName = "uuid", nullable = false)})
  private List<UserEntity> managers;


  @ManyToMany(mappedBy = "managers")
  private List<UserEntity> clients;

但不幸的是,我有一个错误:

无法延迟初始化角色集合:com.company.domain.common.entities.UserEntity.managers,无法初始化代理-没有会话

有人可以解释为什么会发生这种情况,如何解决这个问题?非常感谢!

1 个答案:

答案 0 :(得分:1)

问题是在获取数据期间您没有会话。 我不确定您要在哪里获取数据,但是请尝试在此方法中添加@Transactional。

这将确保JPA使用会话来获取数据。