簡體   English   中英

使用Hibernate進行內部聯接?

[英]Inner join using Hibernate?

我有一個用戶:

@Entity
@Table(name = UserEntity.TABLE_NAME)
public class UserEntity {
  ...
  private List<TeamEntity> teams = new ArrayList<TeamEntity>();
  ...
  @ManyToMany(mappedBy="users" , fetch = FetchType.LAZY)
  public List<TeamEntity> getTeams() {
    return teams;
  }
}

和一個團隊:

@Entity
@Table(name = TeamEntity.TABLE_NAME)
public class TeamEntity {
   ...
   private List<UserEntity> users = new ArrayList<UserEntity>();
   ...
   @ManyToMany (fetch = FetchType.LAZY)
  @JoinTable(name= TeamEntity.TEAM_USER_TABLE,joinColumns=@JoinColumn(name=TeamEntity.TEAM_ID, referencedColumnName="ID",
      insertable = true, updatable = false, nullable = false),
      inverseJoinColumns=@JoinColumn(name=TeamEntity.USER_ID, referencedColumnName="ID",
      insertable = true, updatable = false, nullable = false),
      uniqueConstraints = @UniqueConstraint(columnNames = {TeamEntity.TEAM_ID, TeamEntity.USER_ID}))
  public List<UserEntity> getUsers() {
    return users;
  }
}

如果我有該用戶的ID,該HQL查詢將檢索該用戶所屬的所有團隊嗎?

謝謝!

如果您不在內部聯接上執行任何操作,那么我就不會使用HQL ...

因為使用的是延遲加載,所以必須初始化teams集合...如果使用的是Eager訪存,則不需要第二行。

UserEntity user = (UserEntity) session.byId(UserEntity.class).load(id);
Hibernate.initialize(user.getTeams());

一種查詢方法是遵循JQPL(HQL或多或少是JPQL的超集):

SELECT t 
FROM UserEntity u 
JOIN u.teams t 
WHERE u.id = :userId

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM