特别要注意版本属性、标识符和关联被忽略。
默认情况下值为null的属性将被排除。
如果你的持久类的属性有int等类型,则须给它赋值,因为默认情况下它的值不是null,而是0。
当然这里也可以自己去设置example,比如.excludeZeroes() .excludeProperty()
详见下文
当为一个criteria构建一个Example事例查询时,也可以同时增加其他的约束。
查询示例
org.hibernate.criterion.Example类允许你通过一个给定实例 构建一个条件查询。
Cat cat = new Cat(); cat.setSex('F'); cat.setColor(Color.BLACK); List results = session.createCriteria(Cat.class) .add( Example.create(cat) ) .list();
版本属性、标识符和关联被忽略。默认情况下值为null的属性将被排除。
你可以自行调整Example使之更实用。
Example example = Example.create(cat) .excludeZeroes() //exclude zero valued properties .excludeProperty("color") //exclude the property named "color" .ignoreCase() //perform case insensitive string comparisons .enableLike(); //use like for string comparisons List results = session.createCriteria(Cat.class) .add(example) .list();
你甚至可以使用examples在关联对象上放置条件。
List results = session.createCriteria(Cat.class) .add( Example.create(cat) ) .createCriteria("mate") .add( Example.create( cat.getMate() ) ) .list();