Hibernate投影属性整个对象

时间:2016-06-01 13:12:54

标签: java hibernate criteria

我有这样的案例: Class Foo有两个孩子(AB),每个都是Objects。 在Hibernate中,如果我只想返回一个子列表,我会根据我的标准使用投影:

criteria.setProjection(Projections.property("A"));

这为我提供了A objects的列表,但它们都加载了lazy。一旦我尝试访问id以外的任何内容,就会出现问题。 我的SQL查询确实显示了它:

select A from Foo ...

逻辑上,只填写了我的ID,而不是我的其他属性。我该如何解决这个问题,以便获得一个包含所有内容的A objects列表? 我试过这个:

criteria.setResultTransformer(Transformers.aliasToBean(A.class));

没有成功......

1 个答案:

答案 0 :(得分:1)

如果使用hql,效率会更高:

String hql = "SELECT f.A FROM Foo f";
Query query = session.createQuery(hql);
List results = query.list();

使用标准我会使用此代码

    Criteria crit = session.createCriteria(Foo.class); 
    ProjectionList proList = Projections.projectionList();      
    proList.add(Projections.property("A"));
    crit.setProjection(proList);
    List As= crit.list();

或此块

Criteria crit = session.createCriteria(Foo.class);
crit.createAlias("A","a").setProjection(Projections.property("a"));
List As= crit.list();