我接下来还有几粒豆:
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上查看。