使用条件选择查询

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

在此处输入图像描述

其中一些将取决于您的域类的外观,您可以使用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 }