How to create Criteria on field that can be null?

M314 picture M314 · Mar 28, 2012 · Viewed 38.7k times · Source

I have to create create Criteria or Criterion on specific field myProperity (on class MyClass). I have to choose all objects that have prop = null or satisfy specific Criteria. So I should make something like:

Criteria criteria = this.sessionManager.getCurrentSession().createCriteria(MyClass.class);

specificCriteria = criteria.createCriteria('myProperity');
/* definition of specificCriteria */

Disjunction disjunction = Restrictions.disjunction();
disjunction.add(Restrictions.isNull('myProperity'));
disjunction.add(specificCriteria);

criteria.add(disjunction);

The problem is caused be the facts:

  1. I can't add Criteria to Disjunction (to Disjunction can be added only a Criterion), so line: disjunction.add(specificCriteria); is wrong
  2. I can't somehow modify the specificCriteria, to accept null because I can't make criteria on null. (It gives me NullPointerException)

Have you any Idea how to deal with it?

Answer

Yogesh Prajapati picture Yogesh Prajapati · Mar 30, 2012

You can get answer of all question here this will help you

for ex if your MyClass like

class MyClass{
   private long id;
   private String myProperity;
   .
   .
   .
   setter & getter
}

here you null issue is solved and this'll oring with other criterias.

Criteria criteria = session.createCriteria(MyClass.class);

Disjunction disjunction = Restrictions.disjunction();
disjunction.add(Restrictions.isNull("myProperity"));

criteria.add(disjunction);

criteria.add(Restrictions.eq("id", value));