繁体   English   中英

Java Hibernate使用条件一对多获取

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM