Hibernate 查询M:N实体实例与GORM的关系u非uu相互关联?

Hibernate 查询M:N实体实例与GORM的关系u非uu相互关联?,hibernate,grails,hql,Hibernate,Grails,Hql,我需要跟踪一个M:N与属性的关系,所以我使用了一个链接表,它遵循。。。但是,我看不出如何查询合法但尚不存在的成员关系,例如,任何不在给定团队中的员工或用户尚未竞标的项目等。我正在HQL中对此进行研究,但我对此一无所知,因此我可以使用一些指导来说明什么技术最有效。。。或者,这类查询的示例 为了便于讨论,只需假设Employees:TeamMembership类,每个类都有一个非常大的集合,太大了,无法直接进入中间层并执行集合操作 class Membership { Employee em

我需要跟踪一个M:N与属性的关系,所以我使用了一个链接表,它遵循。。。但是,我看不出如何查询合法但尚不存在的成员关系,例如,任何不在给定团队中的员工或用户尚未竞标的项目等。我正在HQL中对此进行研究,但我对此一无所知,因此我可以使用一些指导来说明什么技术最有效。。。或者,这类查询的示例

为了便于讨论,只需假设Employees:TeamMembership类,每个类都有一个非常大的集合,太大了,无法直接进入中间层并执行集合操作

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)

蒂亚

一个多月前加入公司的非第二团队员工:

Employee.executeQuery("select e from Employee as e inner join e.memberships as m where m.team.id != :tId and e.dateJoinedCompany > :date", [tId: 2, date: new Date() - 60]
//calculate the exact date. instead of using the team id you can use the team instance
员工5不属于的团队

Team.exccuteQuery("select t from Team as t inner join t.memberships as m where m.e.id != :eId",[eId: 5])

在成员资格上使用内部联接是否会导致这些查询忽略未在成员资格表中列出的实体?例如,一个多月前加入但尚未加入任何成员资格的员工?然后将内部联接替换为左联接以通知您:我没有放弃此项或忘记接受答案。。。但是新手的危险!我还不能让外部连接工作。在我的实际应用程序中,我有Audio、UserCallFlow和听力对象,UCF中的用户收听音频,这些对象通过听力表链接,听力表中有“audi”和“UCF”字段。子选择“音频aud not in select h.Audio from HARDING h其中h.ucf=:ucf”正在工作,但使用“from Audio aud left join aud.HARDING h其中h.ucf!=:ucf'始终返回一个空集。所以,还是黑客!继续努力。您可以激活hibernate sql日志来查看即将出现的sql语句。