hibernate的hql是一种中立的数据库查询语言,会随着本地配置的方言选项,进行sql的翻译。
User.hbm.xml
<hibernate-mapping package="com.crm.">
<class name="User" table="tbl_user">
<id name="id" column="id">
<generator class="native"/>
</id>
<property name="truename" not-null="true" column="truename" length="32"/>
<property name="sex" column="sex" length="1"/>
<property name="phone" column="phone"/>
<property name="roomId" column="room_id" not-null="false"/>
<many-to-one name="room" class="com.xieqing.crm.room.Room" column="room_id"
insert="false" update="false"/>
</class>
</hibernate-mapping>
Room.hbm.xml
<hibernate-mapping package="com.crm">
<class name="Room" table="tbl_room">
<id name="id" column="room_id">
<generator class="native"></generator>
</id>
<property name="roomName" not-null="true" column="room_name" length="32"/>
<set name="users">
<key column="room_id"></key>
<one-to-many class="com.xieqing.crm.user.User" not-found="ignore"/>
</set>
</class>
</hibernate-mapping>
User.java
public class User{
private Integer id;
private String truename;
private String phone;
private int sex;
private Integer roomId;
private Room room;
// 省略Getter setter方法
}
Room.java
public class Room {
private Integer id;
private String roomName;
private Set<User> users;
// 省略Getter setter方法
}
tbl_user 表
tbl_room 表
// 注意:这里连接的就是User.java里的room属性了, 改了这里就OK啦。如果后面要加条件就
用with (SQL是用的on)
String hql = "select u from User u left join u.room";
List<User> userList = this.getHibernateTemplate().find(hql).list();
System.out.println("size----"+userList.size());
for(User u : userList) {
System.out.println(u.getId() + " --- " + u.getTruename());
}
相关推荐
本文将深入探讨三种主要的关系映射类型:一对一(One-to-One)、多对一(Many-to-One)和多对多(Many-to-Many),并提供具体实例代码。 **一对一(One-to-One)关系** 一对一关系意味着两个实体之间存在一对一的...
对于多表连接,Criteria API 可以通过 JoinType 类型的 JOIN 方法实现,如 INNER JOIN、LEFT JOIN 等。 **分页查询** 在大数据量的场景下,分页查询是必不可少的,它可以提高用户体验并减少服务器负载。Hibernate ...
2. 在多对多关系的情况下,需要使用 left join 或 inner join 来连接实体类。 3. 使用 where 子句可以过滤出特定的数据。 4. 在 HQL 语句中,使用 join 子句可以连接多个实体类。 5. 在多对多关系的情况下,需要使用...
在实际项目中,我们经常需要处理对象之间的关联关系,如一对一、一对多、多对一和多对多等。本篇文章将主要探讨`hibernate`的一对多关联查询。 ### 1. 一对多关联 在关系数据库中,一对多关系是指一个表中的记录...
对于多对多关系,Hibernate通常会创建一个中间表来存储两个实体的关联。`@ManyToMany`注解用于定义这种关系,联表查询时,可能需要使用`JOIN FETCH`来一次性获取所有关联数据,以避免N+1问题。 8. **Fetch策略** ...
- **多对多映射**:通过中间表实现。 - **单表继承**:所有子类共享一张表。 - **多表继承**:每个子类对应一张表。 - **表每类继承**:每个类对应一张表。 ### 四、查询与检索 #### 4.1 HQL查询 - **基本语法**:...
总的来说,这个项目展示了如何结合Struts2和Hibernate框架处理Web应用中的数据操作,特别是涉及一对多关联关系的查询。开发者需要理解MVC架构,掌握Hibernate的实体映射和关联关系,以及Struts2的Action、Service、...
3. 替换一对一关联为多对一。 4. 配置对象缓存而非集合缓存。 5. 其他高级策略如懒加载配置、SQL语句优化、合理的数据库设计等。 以上策略结合具体应用场景,可以有效提升Hibernate的性能表现。
4. ** Criteria API的Join操作**: 支持多表查询,包括内连接(inner join)、左连接(left join)等。 5. **Criteria API的Projections**: 用于结果集的投影,例如获取平均值、计数等。 **四、事务管理** 1. **...
我们也可以为相关联的实体甚至是对一个集合中的全部元素指定一个别名,这时要使用关键字 join。例如:from Cat as cat inner join cat.mate as mate left outer join cat.kittens as kitten。 HQL 支持的连接类型是...
3. **交叉连接(Cross Join)**:返回两个表的笛卡尔积,即每个表中的每一行都会与另一表中的每一行组合成一条新记录。 #### 三、数据库表连接示例 为了更好地理解上述各种连接类型,我们可以借助一个简单的例子来...
在数据库查询中,连接(JOIN)操作是将两个或多个表的数据合并在一起的关键技术。在Java持久化框架Hibernate中,我们可以使用HQL(Hibernate Query Language)或者Criteria API来执行连接查询。本文主要讨论的是内...
- **关联与连接**:支持内连接(`inner join`)、外连接(`left outer join`, `right outer join`)、全连接(`full join`),用于处理实体之间的关联。 - **投影**:通过`select`子句选择返回的字段或元素。 - **...
Hibernate支持多种连接类型,包括`inner join`(内连接)、`left outer join`(左外连接)、`right outer join`(右外连接)和`full join`(全连接)。`with`关键字用于提供额外的连接条件,类似于SQL中的`on`关键字...
HSQL支持的连接类型包括inner join、left outer join、right outer join和full join。例如: from Formula form full join form.parameter param 4. FETCH连接 HSQL还支持FETCH连接,用于将关联的对象或一组值的...
本篇将重点讲解如何在Hibernate的HQL中执行多对多查询,并通过一个具体的实例来说明。 在Hibernate中,多对多关系是通过中间表(也称为连接表)来实现的。以试题(TmEduExamContent)和分组信息(ClassicCasesGroup...
例如,在用户角色的例子中,用户和角色之间的多对多关系可以通过一个名为`t_user_role`的表来表示,该表包含用户ID(`userid`)和角色ID(`roleid`)两个字段,分别对应用户和角色的主键。配置多对多映射时,`<set>`...
- **RIGHT JOIN:** 直接在HQL中使用`RIGHT JOIN`语法,但由于Hibernate不支持直接的`RIGHT JOIN`语法,可以使用`LEFT JOIN`加上额外的条件来模拟`RIGHT JOIN`的效果: ```java String hql = "FROM UserInfo u ...
- **关联映射:** 学习如何处理一对一、一对多、多对多的关系映射。 - **检索策略:** 包括LEFT JOIN、RIGHT JOIN等不同类型的数据库查询方式。 **环境准备:** - **版本选择:** 本教程使用的是Hibernate 5.0.7版本。 ...
总结来说,映射树形结构在Hibernate中是一项重要技能,它涉及到对数据库设计的理解和ORM框架的熟练运用。掌握不同的映射策略以及如何在代码中实现它们,将有助于提升开发效率并优化应用程序性能。通过研究提供的...