Java 选择使用条件查询

Java 选择使用条件查询,java,mysql,database,hibernate,grails,Java,Mysql,Database,Hibernate,Grails,我这里有三个表。用户可以应用可用的培训。当他/她选择培训时,它将根据他/她的用户ID放置在TRAINUSER表中。我想在用户登录时选择该用户,并显示他/她未应用培训的TRAINUSER表中的数据。与用户一样,id 1已应用2和3培训,但未应用1和4培训。我希望使用hibernate查询在培训1和培训4中显示用户_id 1 其中一些取决于域类的外观,您可以像这样使用executeQuery: Training.executeQuery( "from Training tr where tr.id

我这里有三个表。用户可以应用可用的培训。当他/她选择培训时,它将根据他/她的用户ID放置在TRAINUSER表中。我想在用户登录时选择该用户,并显示他/她未应用培训的TRAINUSER表中的数据。与用户一样,id 1已应用2和3培训,但未应用1和4培训。我希望使用hibernate查询在培训1和培训4中显示用户_id 1


其中一些取决于域类的外观,您可以像这样使用executeQuery:

Training.executeQuery( "from Training tr where tr.id not in ( select t.id from TrainUser tu join tu.training t join tu.user u where u.username = :uname )", [uname: 'ADMIN'] )
假设包含以下域,则仅包含相关字段:

class User {
    String username
}

class TrainUser {
    static hasMany = [training: Training, user: User]
}

class Training {
    String name
}

你能详细说明一下你试过什么东西但没用的部分吗?听起来像是带空条件的外部连接。但不是100%确定是的,兄弟,我在冬眠中很弱,所以我没有得到解决方案。你在冬眠中可能很弱,但是你的mspaint游戏被点燃了。尽管如此,如果你没有显示任何尝试,你可能不会得到太多帮助,我希望你没有真正存储明文密码。选择*from
training
where id not IN(从
user
u internal JOIN
trainuser
t on u.id=t.user\u id,其中u.id=1)这是我现在做的必需的sql查询。如何将其更改为hibernate查询