[英]Java Hibernate One To Many Fetch using Criteria
我有一个这样的实体
public class Student
{
private School school;//many to one...
//setter and getters ommited
}
public class School
{
private Set<Student>students;//Students...
private Set<Owner>owners;//Owners one to many....
}
我的代码很简单。
final Criteria criteria = session.createCriteria(Student.class)
.add(filters)
.setFetchMode("school",FetchMode.JOIN);
final List<Student>students = criteria.list();
但是我也想找回所有者
for(final Student student:students)student.getSchool().getOwners.size();
但这将生成另一个distinct
SQL查询。
但是我想在一个查询中做到这一点吗?
我试试看
final Criteria criteria = session.createCriteria(Student.class)
.add(filters);
final Criteria ownerCriteria = criteria
.createCriteria("school","school")
.createAlias("owners","owners");
final List<Student>students = criteria.list();
但这不起作用,因为当我浏览它时
for(final Student student:students)student.getSchool().getOwners.size();
Exception in thread "main" org.hibernate.LazyInitializationException: failed to lazily initialize a collection of role
引发异常!!! 甚至我也可以在Hibernate SQL console..
看到inner join
Hibernate SQL console..
但是似乎Owner
集合没有填充。
任何解决方法或我要求很多
委内瑞拉对您的一切帮助表示极大的感谢。
你可以用
criteria.setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.