我有这样的案例:
Class Foo
有两个孩子(A
和B
),每个都是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));
没有成功......
答案 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();