java – 在Hibernate中使用Transformers.aliasToBean填充子bean
发布时间:2020-12-15 02:04:59 所属栏目:Java 来源:网络整理
导读:我有下几个豆子: Address { String name; String number; String zipcode; String town;}MyEntity { Address address; String value1; String value2;} 我正在尝试执行下一个Hibernate查询: private final ListString propertiesDistinct = Arrays.asList(
我有下几个豆子:
Address { String name; String number; String zipcode; String town; } MyEntity { Address address; String value1; String value2; } 我正在尝试执行下一个Hibernate查询: private final List<String> propertiesDistinct = Arrays.asList("address.name"); private final List<String> properties = Arrays.asList("address.number","address.zipcode","address.town") ProjectionList projectionList = Projections.projectionList(); if (propertiesDistinct != null) { ProjectionList projectionListDistinct = Projections.projectionList(); for (String propertyDistinct : propertiesDistinct) projectionListDistinct.add(Projections.property(propertyDistinct).as(propertyDistinct)); projectionList.add(Projections.distinct(projectionListAgrupar)); } if (properties != null) for (String property : properties) projectionList.add(Projections.property(property).as(property)); criterio.setProjection(projectionList); // MORE FILTERS ON MyEntity FIELDS //... criterio.add(Restrinctions...); // I want to recover the results on my bean MyEntity so I don't have to create a new one criterio.setResultTransformer(Transformers.aliasToBean(MyEntity.class)); 问题: Caused by: org.hibernate.PropertyNotFoundException: Could not find setter for address.name on class com.entities.MyEntity 我知道Hibernate正在寻找类似的东西: public String getAddressName() {} // This should be in MyEntity 代替: public String getName() {} // In my Address bean 关于如何在不创建新bean的情况下解决这个问题的想法? 谢谢! 解决方法
我写了一个ResultTransformer来解决你的问题.它的名字是AliasToBeanNestedResultTransformer,请在
github上查看.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |