论坛首页 Java企业应用论坛

org.hibernate.criterion.Example(用法解释)

浏览 4324 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-03-10  
org.hibernate.criterion.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();


Example.create(cat) 表示根据cat这个对象来构造一个查询条件。

上面这条语句将查询sex 为 F 而且Color为BLACK的所有Cat记录。


版本属性、标识符和关联被忽略。默认情况下值为null的属性将被排除。
可以自行调整Example使之更实用。
程序代码
Example example = Example.create(cat)
  .excludeZeroes()       //排除值为0的属性
  .excludeProperty("color") //排除 color属性
  .ignoreCase()         //忽略大小写
  .enableLike();         //启用模糊查询
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();
   发表时间:2011-03-18  
通用性不强,一般组HQL语句
0 请登录后投票
   发表时间:2011-03-18  
java苹果+番茄 写道

Example example = Example.create(cat)
  .excludeZeroes()       //排除值为0的属性
  .excludeProperty("color") //排除 color属性
  .ignoreCase()         //忽略大小写
  .enableLike();         //启用模糊查询


使用起来太麻烦了,尤其是针对java原始值,
数值的话,还可以每次都排除0值属性,但对于boolean值,
究竟要不要排除,要根据实际情况,这样导致操作起来太麻烦了。

没法写一个统一的API,比如findByExample(Object bo);


0 请登录后投票
   发表时间:2011-03-18  
这种用法倒是第一次看到,一般都是用的hql和sql query 接口
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics