关于hql的多重关联join fetch预加载和select挑选多个属性/对象

-------------------------- 题记

1.若有关系,班级1-n学生,学生1-n衣服,在hbm配置文件中,都使用延迟加载,那么查班级,如何使用hql同时预加载学生衣服呢?

2.hql中使用select 挑选多个属性/对象,如何分别取得其值?

看代码。。

-------------------------- 代码

code1:

//必须加上distinct
new String('select distinct s '+
	'from Student s '+
	'join fetch s.myClothes');
new String('select distinct c '+
	'from MyClass c '+
	'join fetch c.students s '+
	'join fetch s.myClothes');

code2:

List<Object[]> list = getHibernateTemplate().find(
		"select c,c.className from MyClass c");
for (Object[] objs : list) {
	System.out.println(objs[0]);
	System.out.println(objs[1]);
}

--------------------------- 注

如上code1中,挑选的对象必须加上distinct修饰,挑选出无重复的,因为使用预加载join fetch会有很多重复,具体原因也没仔细研究。

而code2中,经过hibernate封装出来的对象是List<Object[]>(即集合中存储了数组的引用),每个集合的元素(element)便是一个数组的引用,使用该引用(objs[0])便可以得到hql中select挑选出来的属性/对象了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值