`
bto310
  • 浏览: 13864 次
  • 来自: ...
文章分类
社区版块
存档分类
最新评论

Hibernate Criteria对关联查询的实现

阅读更多
关联查询可分为两种:

A) 实体间有定义关联关系的(一对多,多对一等)

对已定义关联关系的,我们可以使用createAlias()来创建属性的别名,然后引用别名进行条件查询,如:
Criteria criteria = session.createCriteria(Parent.class); 
criteria.createAlias("children", "c").add(Expression.eq( "c.name" ,  childName));

这样进行查询时就可得到关联查询后的Parent对象结果集。
要注意的是,如果在createAlias()之后,又使用了setProjection(如查询总记录数),这样得到的查询结果集中,每个对象并不是Parent类型,而是一个对象数组(Object[]),里边有一个Parent对象和一个Child对象,需要根据object的类名去判断是哪个对象。

如果还要恢复默认的结果集状态,需调用
criteria.setResultTransformer(Criteria.ROOT_ENTITY);

B) 实体间未定义关联关系的

对未定义关联关系的,我们需要使用Exist子查询来辅助,如:
Criteria criteria = session.createCriteria(Brother.class, "b"); 
DetachedCriteria sisCri = DetachedCriteria.forClass(Sister.class, "s");
sisCri.add(Property.forName("s.fName").eqProperty("b.fName"));
criteria.add(Subqueries.exists(sisCri.setProjection(Projections.property("s. id "))));
分享到:
评论

相关推荐

    hibernate如何使用criteria联合查询 group by 的语句

    这个案例是根据分组查询,并且得到每组的条数,不懂得可以q我:1710086675,欢迎认识更多新朋友

    hibernate criteria 分组 排序 关联

    ### Hibernate Criteria 分组、排序与关联查询详解 #### 标题与描述理解 - **标题**:“hibernate criteria 分组 ...以上就是关于Hibernate Criteria API中的分组、排序与关联查询的相关知识点,希望对你有所帮助。

    Hibernate Criteria 排序的問題

    在使用Hibernate进行数据库操作时,经常需要对查询结果进行排序处理。对于简单的查询场景,使用HQL(Hibernate Query Language)即可轻松实现排序功能;但对于复杂的多表关联查询场景,则需要借助Criteria API来灵活...

    hibernate多表联合查询

    ### Hibernate多表联合查询详解 #### 一、引言 在实际项目开发中,我们经常需要处理复杂的数据库查询,特别是涉及到多个表之间的关联查询。...希望本文能对你理解Hibernate的多表联合查询有所帮助。

    Criteria连表查询

    Hibernate中的Criteria连表查询,包括单表属性查询,多表内连,以及左外连接查询

    Hibernate的Criteria用法总结

    Criteria用于在线查询,直接与Hibernate Session关联,而DetachedCriteria则可在不依赖Session的情况下创建,适用于离线或延迟执行的查询。DetachedCriteria可以通过`forClass(Class)`或`forEntityName(String)`静态...

    Hibernate-Criteria 模糊查询

    在Hibernate的Criteria API中,模糊查询主要通过`Restrictions.like()`方法来实现。该方法接受两个参数:字段名和包含通配符的字符串。 ##### 示例1:单字段模糊查询 ```java // 查找名字中包含“Erica”的用户 ...

    Criteria hibernate

    Hibernate Criteria API允许进行关联查询,包括内连接、外连接等。通过addJoin()或createAlias()方法实现。 7. **子查询(Subqueries)** 当需要在查询条件中使用子查询时,Criteria API提供了Subqueries类。可以...

    Hibernate 多表连接分页查询示范项目

    总结,"Hibernate 多表连接分页查询示范项目"是一个实用的示例,它展示了如何在实际应用中利用 Hibernate Criteria API 实现复杂查询和分页,对于学习和掌握 Hibernate 的高级特性和数据库操作技巧非常有帮助。...

    Hibernate中Criteria的完整用法

    Hibernate 的 Criteria 是一种强大且灵活的查询机制,允许开发者根据需求灵活地组装查询条件。Criteria 的设计是基于 CriteriaSpecification 父接口,提供了 Criteria 和 DetachedCriteria 两个实现。 Criteria 和 ...

    Hibernate的Criteria用法总结.doc

    Hibernate 的 Criteria 是一个完全面向对象、可扩展的条件查询 API,通过它完全不需要考虑数据库底层如何实现、SQL 语句如何实现。Criteria 提供了灵活的查询条件组装方式,能够满足开发中复杂的查询需求。 一、...

    Hibernate_Criteria条件查询数据

    7. **关联查询**:Criteria支持一对多、多对一、一对一等关联查询。通过`createCriteria()`方法,可以嵌套创建关联对象的Criteria,以获取相关联的数据。 8. **子查询**:Criteria也支持子查询,可以将一个Criteria...

    Hibernate Criteria 完全使用

    Criteria API 支持连接查询,通过 `createCriteria()` 方法可以添加关联实体,然后设置关联条件。 ```java criteria.createCriteria("associatedEntity", "assocAlias") .add(Restrictions.eq("assocProperty", ...

    关联映射hibernate的criteria的用法

    **关联映射Hibernate的Criteria用法详解** 在Java开发中,Hibernate作为一种强大的对象关系映射(ORM)框架,极大地简化了数据库操作。其中,Criteria API是Hibernate提供的一个动态查询工具,它允许开发者以面向...

    Hibernate Criteria用法大全.docx

    Hibernate Criteria API 是一种面向对象的查询方式,它提供了一种比HQL(Hibernate Query Language)更为简洁且直观的查询手段。通过Criteria API,开发者可以构建复杂的查询条件,无需直接编写SQL,使得代码更加...

    hibernate多对多关联映射

    如果在实体类中启用了懒加载,可以通过`Hibernate.initialize()`或`Criteria`查询来获取关联数据。 3. 删除关联 删除关联需要先从双方的集合中移除相关对象,然后更新这两个实体。例如,删除一个学生与课程的关联:...

    hibernate多对多查询

    进行多对多查询时,我们可以通过Hibernate的Criteria API、HQL(Hibernate Query Language)或JPA的Query API来实现。例如,如果我们想找到所有选修了特定课程的学生,可以使用HQL: ```java String hql = "FROM ...

    Hibernate中Criteria的使用

    Hibernate 中 Criteria 的使用 Hibernate 中 Criteria 的使用是 ...Hibernate 中 Criteria 的使用可以灵活地根据查询条件的组装来进行查询,使用 Criterion 和 Projection 设置查询条件,可以实现复杂的查询操作。

    Hibernate中,利用Criteria查询容器实现sql的写法

    这篇博客文章“Hibernate中,利用Criteria查询容器实现sql的写法”可能详细讲解了如何使用Criteria API来构建复杂的查询条件,并将其转化为对应的SQL语句。 Criteria查询的基本使用步骤包括以下几个方面: 1. 创建...

Global site tag (gtag.js) - Google Analytics