栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何使用Hibernate转换平面结果集

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何使用Hibernate转换平面结果集

是的,有可能。您可以为其使用自定义转换器:
FluentHibernateResultTransformer。

您可以复制粘贴代码,也可以通过Maven添加jar:fluent-hibernate-
core

您需要使用

Criteria
Projections
。请不要忘记指定投影别名(
userName
addressDetails.countryCode

Criteria criteria = session.createCriteria(Customer.class);criteria.createAlias("addressDetails", "addressDetails", JoinType.LEFT_OUTER_JOIN);criteria.setProjection(Projections.projectionList()        .add(Projections.property("userName").as("userName"))        .add(Projections.property("addressDetails.countryCode")        .as("addressDetails.countryCode")));List<Customer> customers = criteria.setResultTransformer(        new FluentHibernateResultTransformer(Customer.class)).list();

与HQL一起使用

无法将其与HQL一起使用,因为Hibernate不允许在HQL中使用嵌套别名

select addressDetails.countryCode as addressDetails.countryCode

addressDetails.countryCode
别名会出错。

与本机SQL一起使用

该转换器可用于带有嵌套投影(与HQL相反)的本机SQL。在这种情况下,需要使用带引号的别名:

String sql = "select c.f_user_name as userName, d.f_country_pre as "addressDetails.countryCode" "        + "from customers c left outer join address_details d on c.fk_details = d.f_pid";List<Customer> customers = session.createSQLQuery(sql)        .setResultTransformer(new FluentHibernateResultTransformer(Customer.class))        .list();


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/447513.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号