Một số điều này sẽ phụ thuộc vào việc các lớp miền của bạn trông như thế nào, bạn có thể sử dụng executeQuery như sau:
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'] )
Giả sử các miền sau, chỉ bao gồm các trường có liên quan:
class User {
String username
}
class TrainUser {
static hasMany = [training: Training, user: User]
}
class Training {
String name
}