Hibernate Criteria Projection of non scalar values

Is there any way to project multiple values for an root entity object using Criteria?

Assume we have these classes (With the proper mappings):

   class Boss {
        private String name;
        private List<Employee> employees;

        // setters and getters and more stuff
   }

   class Employee {

        private String name;

        // setters and getters and more stuff
   }

Then i am trying to do this :

   public void test() {
        Criteria criteria = this.getSession().createCriteria(Boss.class);

        criteria.createAlias("employees","employees");

        ProjectionList projectionList = Projections.projectionList();
        projectionList.add(Projections.property("name"), "name");
        projectionList.add(Projections.property("employees.name"), "subordinatesNames"); 
        criteria.setProjection(projectionList);

        criteria.setResultTransformer(new AliasToBeanResultTransformer(BossBean.class));
        List<BossBean> results = criteria.list(); // fails here
        for (BossBean bossBean : results) {
            System.out.println (bossBean);
        }
    }

This is how the Bean looks like (nothign special, just for grouping values) :

public static class BossBean {
    private String name;
    private List<Strings> subordinatesNames;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public List<Strings> getSubordinatesNames() {
        return subordinatesNames;
    }

    public void setSubordinatesNames(List<Strings> subordinatesNames) {
        this.subordinatesNames = subordinatesNames;
    }

}

The exception is this :

2014-06-06 13:37:38 [main] ERROR org.hibernate.property.BasicPropertyAccessor - expected type: java.util.List, actual value: java.lang.String.

I Guess is trying to fit the String returned from Boss (root object) -> (A) Employee (association) -> name (value) into a List .

I want to auto magically get all inserted in the List . Is there a way to achieve this using Criteria? If not, how i can achieve it?

Thanks in advance!

Grettings

Víctor

链接地址: http://www.djcxy.com/p/37112.html

上一篇: Hibernate标准projection.OneToMany。 嵌套的DTO

下一篇: Hibernate标准投影非标量值