我有这样的情况: 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));
但没有成功。
如果你使用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();