2014-09-25 2 views
1

У меня есть несколько классов домена, подобные следующим:Запрос ассоциации класса домена в Grails

class Position { 
    String code 
    String title 

    static hasMany = [relations: Relation] 
} 

class Unit { 
    String code 
    String title 

    static hasMany = [relations: Relation] 
} 

class Relation { 
    Position position 
    Unit unit 

    static belongsTo = [ 
     position: Position, 
     unit: Unit 
    ] 
} 

Я пытаюсь использовать критерии, чтобы найти все позиции, которые не делают никаких отношений. Я знаю, что это можно решить с помощью HQL, но я считаю критерии более чистыми при построении динамических критериев и построении динамической строки HQL.

Есть ли способ, чтобы использовать критерии, чтобы сделать что-то вроде:

Position.withCriteria { isNull('relations') } 

Я попытался выше, но я всегда получаю список, содержащий элементы 0, хотя я знаю, что есть несвязанные позиции в таблице.

ответ

1

Для коллекций вам необходимо использовать isEmpty() вместо isNull().

Position.withCriteria { isEmpty('relations') } 
+0

Ничего себе. Я потратил на это несколько часов, и это было так просто. Огромное спасибо. – thewidgetsmith

+0

Не беспокойтесь. Рад помочь. –