2011-09-20 116 views
1

任何领域,我有以下对象:其中在休眠

Agency 

Name 
Description 

我想返回休眠对象如果文本“大”在任何领域的appers。

有没有比SQL查询更好的方法: select distinct id from agency where name like 'big' or description like 'big'在Hibernate中?

编辑:

我喜欢写一个解决方案,为每类通用的 - 即Hibernate可以在任何领域的检查,而无需指定他们

回答

2
Criteria criteria = sess.createCriteria(Agency.class) 
    for (Field f : Agency.class.getDeclaredFields()) 
    { 
     if(f.isAccessible()) { 
      criteria.add(Restrictions.like(f.getName(), "%big%")); 
     } 
    } 
List agencies = criteria.list(); 

如果您在注解类,那么您可以读取名称。

为此,该字段的名称必须与列匹配。但是你可以利用它们。

1

Critieria query

List agencies = sess.createCriteria(Agency.class) 
    .add(Restrictions.like("Name", "%big%")) 
    .add(Restrictions.like("Description", "%big%")) 
    .list(); 

或者你可能需要或取决于你想要什么:

List agencies = sess.createCriteria(Agency.class) 
    .add(Restrictions.or(
     Restrictions..like("Name", "%big%"), 
     Restrictions.like("Description", "%big%") 
    )) 
    .list();