【发布时间】:2011-09-01 01:38:52
【问题描述】:
我需要跟踪与属性的 M:N 关系,所以我正在使用链接表(遵循Many-to-Many Mapping without Hibernate XML 的模式)......但是,我看不到如何查询该会员关系是否合法-但尚未存在的关系,例如,给定团队中不的任何员工(或用户尚未出价的项目等)。我正在使用 HQL 进行研究,但我对此很陌生,因此我可以使用一些指导来了解哪种技术最有效……或者,这种查询的示例;)
为了讨论,假设Employees:Team Membership 类,每个类都有一个非常大的集合(太大而不能拉入中间层并进行集合操作)。
class Membership {
Employee employee
Team team
String other // I need attributes on the relationship
}
class Employee {
Date dateJoinedCompany
String name
static hasMany = [managedTeams:Team, memberships:Membership]
static mappedBy = [managedTeams:"manager"]
}
class Team {
String name
Employee manager
static belongsTo = Employee
static hasMany = [memberships:Membership]
}
所以,我需要一个查询,它返回一个多月前加入公司的不属于团队 #2 的员工,或者员工 #5 不属于的团队,诸如此类的事情 什么是最好的技术 - 是否有如何使用标准做到这一点?或者,关于如何最好地使用 HQL 有什么建议吗?
我应该添加我当前的想法,使用 HQL 和子选择:
from Team t where t not in (select m.team from Membership m where m.employee = 5)
TIA!
【问题讨论】: