Hibernate内连接、迫切内连接、左外连接、迫切左外连接、右外连接、等值连接、隐式内连接

左外连接:

public List<Object[]> findAll() throws Exception {
		//List集合中每个元素都是Object数组,数组的第一个元素是Users对象,第二个元素是House对象,Users对象的houses集合元素没有被初始化,即houses集合没有存放关联的house对象
		return currentSession().createQuery("from Users u left join u.houses").list();
	}
迫切左外连接:

public List<Users> findAll() throws Exception {
		//List集合中的每个元素是Users对象,Hibernate使用fetch(取得)关键字实现了将House对象读取出来后立即填充到Users对象的houses集合属性中 ,select distinct去除重复的Users对象
		return currentSession().createQuery("select distinct u from Users u left join fetch u.houses").list();
	}
等值连接:

public List<Object[]> findAll() throws Exception {
		//等值连接适用于两个类之间没有定义任何关联关系时,如统计报表数据。在where子句中,通过属性作为筛选条件
		//使用等值连接时应避免from Users,House这样的语句出现,这样会返回两张表的交叉组合,记录数是两表记录数之积,也就是数据库中的笛卡尔积,结果没有意义
		return currentSession().createQuery("from Users u,House h where u=h.users").list();
	}

隐式内连接:

public List<House> findAll() throws Exception {
		return currentSession().createQuery("from House h where h.users.name=?").setParameter(0, "李林").list();
	}


其他连接换关键字即可




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值