[英]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.