Использование оператора HQL CASE - PullRequest
0 голосов
/ 29 сентября 2011

Я использую HQL, и у меня есть этот запрос

<query name="rule.myRule.query.by.name">
    <![CDATA[
        FROM rule.myRule as cr
        WHERE cr.name LIKE :name
        AND cr.type = 'myType'
        CASE 
            WHEN COUNT(cr.childRules) > 0
        THEN 
            cr.childRules LIKE :name
    ]]>
</query>

Мне нужна помощь, чтобы сделать этот запрос правильным. Я хочу, чтобы условие cr.childeRule LIKE: name выполнялось только тогда, когда число cr.childRules> 0.

Где я не прав?

1 Ответ

1 голос
/ 29 сентября 2011
FROM rule.myRule as cr
left join cr.childRules childRule
WHERE cr.name LIKE :name
AND cr.type = 'myType'
and childRule.id is null or childRule.name = :name

должен делать то, что вы хотите.

...