KuinaDAOでの複雑な(?)表現

SQLのWHERE句の中に
「AND (○○ = 'Choo' OR ○○ IS NULL)」
のように多層な表現を入れる場合。

import static org.seasar.kuina.dao.criteria.CriteriaOperations.or;
import static org.seasar.kuina.dao.criteria.CriteriaOperations.ne;
import static org.seasar.kuina.dao.criteria.CriteriaOperations.isNull;


  conditionalExpressions.add(or(
    ne(Id.shop.ognl() + "." + Id.shopCode.ognl(), "choo"),
    isNull(Id.shop.ognl() + "." + Id.shopCode.ognl())
    )
  );


これによって生成される条件節は

and (
  shop1_.shopCode<>'choo'
  or shop1_.shopCode is null
  )