DetachedCriteria子查询与ALIAS_TO_ENTITY

本文深入探讨了在使用Projections.projectionList().add(Projections.property(field))时需要设置别名以确保HQL正确执行的问题,并提供了将相同逻辑从直接代码转换为HQL的方法,解决了在集成Hibernante时遇到的取值为空的困扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

直接贴代码吧:

Class clazz = ServiceHelper.getRelateClazz(tag);
DetachedCriteria query = DetachedCriteria.forClass(clazz);
query.add(Restrictions.ge("updatetime", updatetime));
Collection<String> fieldList = getFieldList(tag, fields);
ProjectionList properties = Projections.projectionList();
for(String field: fieldList){
properties.add(Projections.property(field));
}
query.setProjection(properties);
query.setResultTransformer(DetachedCriteria.ALIAS_TO_ENTITY_MAP);
List<Map> resultList = hibernateTemplate.findByCriteria(query, from, Math.min(maxnum, 1000));


同样的逻辑,如果拼SQL则没有问题,使用HQL就取出的是[{}]
百撕不得其姐呀。 终于。。。[url]http://www.iteye.com/topic/363586[/url] 这个找到了一点苗头。 感谢党。

[size=medium]
总结:
Projections.projectionList().add(Projections.property(field));时是需要一个别名的,修改为 Projections.projectionList().add(Projections.property(field)[color=red].as(field)[/color]) 就OK了。
[/size]

以上.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值