灵活使用Hibernate的查询对象DetachedCriteria
2006-12-11 10:13
691 查看
Hibernate提供了HQL,方便查询的编写。但是在某些情况下,我更喜欢用Criteria,因为它的语义非常明确。
在处理对象关联的时候,经常要对对象下的某个集合字段进行条件限制。比如下面的类:
在初始化数据中,假设MainClass的实例m1含有SubClass的实例s1,s2,s3;MainClass的实例m2含有SubClass的实例s2,s3,s4。
而其中s1,s2,s3,s4的value分别是1,2,3,4
现在要查询出 MainClass中SubClass集合含有SubClass实例value为2的的MainClass实例并且type为1,可以使用下面的查询方法:
执行此查询对象后会得到符合条件的MainClass实例。
需要注意的是在获取的MainClass实例中,subs是完全的记录集,而不是经过过滤的记录集,也就是相当于根据MainClass的ID获取的完整实例一样。
ps:
如果需要过滤subs的记录集,需要使用额外的过滤方法,请参考Hibernate的具体实现。
使用HQL也可以很方便地实现,但是需要给出完整的join标记,不如createAlias来得方面和直观。
在处理对象关联的时候,经常要对对象下的某个集合字段进行条件限制。比如下面的类:
public class MainClass { protected long id; protected int type; protected Set<SubClass> subs= new HashSet<SubClass>(); ...... getter/setter} public class SubClass{ protected long id; protected int value; protected Set<MainClass> ms = new HashSet<MainClass>(); ...... getter/setter }
在初始化数据中,假设MainClass的实例m1含有SubClass的实例s1,s2,s3;MainClass的实例m2含有SubClass的实例s2,s3,s4。
而其中s1,s2,s3,s4的value分别是1,2,3,4
现在要查询出 MainClass中SubClass集合含有SubClass实例value为2的的MainClass实例并且type为1,可以使用下面的查询方法:
DetachedCriteria criteria = DetachedCriteria .forClass(MainClass.class); criteria.add( Restrictions.eq("type", new Integer(1))) .createAlias("subs", "s").add( Restrictions.eq("s.value", new Integer(2)));
执行此查询对象后会得到符合条件的MainClass实例。
需要注意的是在获取的MainClass实例中,subs是完全的记录集,而不是经过过滤的记录集,也就是相当于根据MainClass的ID获取的完整实例一样。
ps:
如果需要过滤subs的记录集,需要使用额外的过滤方法,请参考Hibernate的具体实现。
使用HQL也可以很方便地实现,但是需要给出完整的join标记,不如createAlias来得方面和直观。
相关文章推荐
- 灵活使用Hibernate的查询对象DetachedCriteria
- 灵活使用Hibernate的查询对象DetachedCriteria
- (hibernate查询)DetachedCriteria对象创建可以不需要使用session去创建
- Hibernate使用DetachedCriteria和Criteria查询
- Hibernate里面如何使用DetachedCriteriaCriteria 实现多条件分页查询
- 使用hibernate的criteria分页查询后得到数组对象
- Hibernate 中的 DetachedCriteria查询(所有使用到的类属性必须在映射文件中存在)
- Hibernate-Criteria查询(3)DetachedCriteria构造查询条件、命名查询、原生SQL、调用存储过程(使用JDBC)
- Atitit.Hibernate于Criteria 使用汇总and 关系查询 and 按照子对象查询 o9o
- 在hibernate中查询使用List,Map和类对象定制返回类型
- Hibernate的Criteria和DetachedCriteria 查询
- Hibernate中DetachedCriteria的使用
- Hibernate中DetachedCriteria的使用
- Hibernate3的DetachedCriteria使用
- Hibernate中使用Criteria查询及注解——(Dept.hbm.xml)
- Atitit.Hibernate中Criteria 使用总结and 关联查询 and 按照子对象查询 o9o
- Hibernate 自定义查询sql 并使用自定义对象接收查询结果
- hibernate的Query、Criteria、SQLQuery对象使用
- Hibernate中DetachedCriteria的使用
- Hibernate中DetachedCriteria的使用