休眠投影属性整个对象



我有这样的情况: 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));

但没有成功。

如果你使用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();

最新更新