`
chaoyi
  • 浏览: 291108 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

Hibernate 内连接和左外连接

 
阅读更多
package test;

import java.util.List;

import org.hibernate.HibernateException;
import org.hibernate.Query;
import org.hibernate.Session;

import util.HibernateSessionFactory;
import entity.Student;
import entity.Teacher;

public class TestInnerJoin {
	public static void main(String[] args) {
		jion();// 内连接
		leftJoin();// 左外连接
	}

	private static void jion() {
		// 打开Session
		Session session = HibernateSessionFactory.getSession();
		// 内连接 hql 语句
		String hql = "from Student s inner join s.teacher";
		try {
			// 实例查询对象
			Query query = session.createQuery(hql);
			// 获取列表
			List<Object[]> lists = query.list();
			// 遍历列表
			for (Object[] list : lists) {
				// 判断如果是 Student
				if (list[0] instanceof Student) {
					// 获取 Student 的列表
					Student student = (Student) list[0];
					System.out.print(student.getId() + " " + student.getName());
				}
				// 判断如果是 Teacher
				if (list[1] instanceof Teacher) {
					// 获取 Teacher 的列表
					Teacher teacher = (Teacher) list[1];
					System.out.println(teacher.getId() + " "
							+ teacher.getName() + " ");
				}
			}
			System.out.println("成功");
		} catch (HibernateException e) {
			e.printStackTrace();
		} finally {
			// 关闭 session,释放资源
			HibernateSessionFactory.closeSession();
		}
	}

	private static void leftJoin() {
		// 打开Session
		Session session = HibernateSessionFactory.getSession();
		// 内连接 hql 语句
		String hql = "from Student s left join s.teacher";
		try {
			// 实例查询对象
			Query query = session.createQuery(hql);
			// 获取列表
			List<Object[]> lists = query.list();
			// 遍历列表
			for (Object[] list : lists) {
				// 判断如果是 Student
				if (list[0] instanceof Student) {
					// 获取 Student 的列表
					Student student = (Student) list[0];
					System.out.print(student.getId() + " " + student.getName());
				}
				// 判断如果是 Teacher
				if (list[1] instanceof Teacher) {
					// 获取 Teacher 的列表
					Teacher teacher = (Teacher) list[1];
					System.out.println(teacher.getId() + " "
							+ teacher.getName() + " ");
				}
			}
			System.out.println("成功");
		} catch (HibernateException e) {
			e.printStackTrace();
		} finally {
			// 关闭 session,释放资源
			HibernateSessionFactory.closeSession();
		}
	}
}

 

效果图:

 

 

  • 大小: 54.3 KB
分享到:
评论

相关推荐

    精通 Hibernate:Java 对象持久化技术详解(第2版).part2

     18.1.8 使用SQL风格的交叉连接和隐式内连接  18.1.9 关联级别运行时的检索策略  18.2 投影查询  18.3 报表查询  18.3.1 使用聚集函数  18.3.2 分组查询  18.3.3 优化报表查询的性能  18.4 高级查询技巧  ...

    MyEclipse中hibernate的配置

    和JDBC比较一下,同样都是数据库中间件(DM,Database Middleware),JDBC利用SQL语言操作的是数据,而Hibernate则是利用自己的查询语言Hibernate Query Language(HQL虽然底层还是要转换成sql语言)操作的是持久化对象...

    Hibernate HQL教程

    hibernate HQL详细教程,简单易学易懂 1.1 HQL基础 2 1.1.1 默认数据库表和数据 2 1.1.2 检索类的所有对象 4 1.1.3 检索类的某几个...1.4.6 左外抓取连接 23 1.4.7 右外连接 24 1.4.8 内连接 24 1.4.9 抓取内连接 25

    精通 Hibernate:Java 对象持久化技术详解(第2版).part4

     18.1.8 使用SQL风格的交叉连接和隐式内连接  18.1.9 关联级别运行时的检索策略  18.2 投影查询  18.3 报表查询  18.3.1 使用聚集函数  18.3.2 分组查询  18.3.3 优化报表查询的性能  18.4 高级查询技巧  ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part3

     18.1.8 使用SQL风格的交叉连接和隐式内连接  18.1.9 关联级别运行时的检索策略  18.2 投影查询  18.3 报表查询  18.3.1 使用聚集函数  18.3.2 分组查询  18.3.3 优化报表查询的性能  18.4 高级查询技巧  ...

    struts+spring+hibernate整合

    Spring4.0、Struts2.3.15、Hibernate4.2.4、jQuery1.9.1涉及到了诸多开发时的细节:ModelDriven、Preparable 拦截器、编写自定义的类型转换器、Struts2 处理 Ajax、OpenSessionInViewFilter、迫切左外连接、Spring ...

    精通 Hibernate:Java 对象持久化技术详解(第2版).part1.rar

     18.1.8 使用SQL风格的交叉连接和隐式内连接  18.1.9 关联级别运行时的检索策略  18.2 投影查询  18.3 报表查询  18.3.1 使用聚集函数  18.3.2 分组查询  18.3.3 优化报表查询的性能  18.4 高级查询技巧  ...

    hibernate总结

    b) 在hql中要使用迫切左外连接时,必须加 left join fetch 对象.关系属性 i. 如果不加fetch关键字,则hibernate不会抓取关系属性,但会遍历关系属性所对应的表 ii. 不加fetch关键字时,select 要指定返回的对象,...

    Criteria连表查询

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

    hibernate中的hql查询案例

    hibernate的hql查询 HQL(Hibernate Query Language),提供更加丰富灵活、更为强大的查询能力;HQL更接近SQL语句查询语法。查询的表(Table)名称是类的名称,表的字段是对象的属性,有多个类的话,可以使用类的全...

    hql语句经典教程

    hibernate hql语句 经典教程 实用 全面

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    由于J2EE的开源的框架中提供了MVC模式实现框架Struts、对象关系模型中的Hibernate 的框架及拥有事务管理和依赖注入的Spring。利用现存框架可以更快开发系统。所以选择Java技术作为blog 的开发工具。 为了增加系统的...

    低清版 大型门户网站是这样炼成的.pdf

    5.2.3 迫切左外连接检索 300 5.3 hql查询方式 303 5.3.1 基本查询 303 5.3.2 条件查询 305 5.3.3 分页查询 307 5.3.4 连接查询 308 5.3.5 子查询 311 5.3.6 动态实例化查询结果 313 5.4 qbc查询方式 314 ...

    Java常见面试题208道.docx

    170.mysql 的内连接、左连接、右连接有什么区别? 171.mysql 索引是怎么实现的? 172.怎么验证 mysql 的索引是否满足需求? 173.说一下数据库的事务隔离? 174.说一下 mysql 常用的引擎? 175.说一下 mysql 的行锁和...

    SqlToolBox 1.8.2

    连接到数据库后,会提供数据库Schema和表的树视图以便用户进行浏览和查找,另外还提供了一个过滤器帮助用户缩小查找范围。 3. 用户能自动快速获取单表的创建,查询,更新,删除,建表语句,整表全部数据插入语句,...

    基于SSH模拟当当网项目(电子商务平台)

    利用join fetch可以提高查询效率,将关联属性随着主对象一起采用表连接的形式查询. 如果使用了join fetch的话,查询缓存只缓存主对象.join fetch的关联属性不能缓存. 3.Hibernate假分页问题 如果查询语句使用了join...

Global site tag (gtag.js) - Google Analytics