15.6. 查询示例

org.hibernate.criterion.Example类允许你通过一个给定实例 构建一个条件查询。

  1. Cat cat = new Cat();
  2. cat.setSex('F');
  3. cat.setColor(Color.BLACK);
  4. List results = session.createCriteria(Cat.class)
  5. .add( Example.create(cat) )
  6. .list();

版本属性、标识符和关联被忽略。默认情况下值为null的属性将被排除。

你可以自行调整Example使之更实用。

  1. Example example = Example.create(cat)
  2. .excludeZeroes() //exclude zero valued properties
  3. .excludeProperty("color") //exclude the property named "color"
  4. .ignoreCase() //perform case insensitive string comparisons
  5. .enableLike(); //use like for string comparisons
  6. List results = session.createCriteria(Cat.class)
  7. .add(example)
  8. .list();

你甚至可以使用examples在关联对象上放置条件。

  1. List results = session.createCriteria(Cat.class)
  2. .add( Example.create(cat) )
  3. .createCriteria("mate")
  4. .add( Example.create( cat.getMate() ) )
  5. .list();