在休眠中执行查询时出错

Getting error in executequery in hibernate

我在控制器内部的 grails 中编写了一个 hql 查询,在执行它时出现错误,例如

unexpected token: where near line 1, column 166 [FROM com.ashwin.Training tr where tr.id NOT IN (SELECT t.training_id from com.ashwin.User u INNER JOIN com.ashwin.TrainUser t on u.id=t.user_id where u.id=t.user_id where u.id=:uid)]".

我的 Hibernate 查询是

def currentUser = springSecurityService.currentUser.id
def trainingList=Training.executeQuery("FROM Training tr where tr.id NOT IN (SELECT t.training_id from User u INNER JOIN TrainUser t on u.id=t.user_id where u.id=t.user_id where u.id=:uid)",[uid:currentUser])
             [trainingLists:trainingList]

在内部 select 你有这个

t on u.id=t.user_id where u.id=t.user_id where u.id=:uid

Double哪里不对。而且您已经定义了连接规则。所以正确的说法是

FROM Training tr where tr.id NOT IN 
    (SELECT t.training_id from User u INNER JOIN TrainUser t 
    on u.id=t.user_id where u.id=:uid)