本文介绍了在Hibernate中使用Transformers.aliasToBean填充子bean的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有下几个bean:

I have the next couple of beans:

Address {
    String name;
    String number;
    String zipcode;
    String town;
}

MyEntity {
    Address address;
    String value1;
    String value2;
}

我正在尝试执行下一个Hibernate查询:

I'm trying to do the next Hibernate query:

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));

问题:

Problem:

Caused by: org.hibernate.PropertyNotFoundException: Could not find setter for address.name on class com.entities.MyEntity

我明白Hibernate正在寻找类似于以下内容的东西:

I understand that Hibernate is looking for something like:

public String getAddressName() {} // This should be in MyEntity

而不是:

Instead of:

public String getName() {} // In my Address bean

有关如何在不创建新bean的情况下解决这个问题的想法?

Ideas about how can I fix this without creating a new bean?

谢谢!

Thanks!

推荐答案

我编写了一个可以解决您的问题的ResultTransformer。它的名字是AliasToBeanNestedResultTransformer,请在上查看。

I wrote a ResultTransformer that can fix your problem. It's name is AliasToBeanNestedResultTransformer, check it out on github.

这篇关于在Hibernate中使用Transformers.aliasToBean填充子bean的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-23 16:56