我才学Hibernate,碰到个问题想问一下。
一对多的关系,我要对子对象过滤是直接写HQL还是用过滤器好些?
比如学生上课情况,两个对象是Student和AttendClass。
Student里有个Set<AttendClass> attendClass;
第一种
select s from Student s join s.attendClass ac
                        where ac.time between :startTime and :endTime
                              and s.name=:name;
直接用HQL查询出来。第二种
使用过滤器
//获得Session
Query query = session.createQuery("from Student s where s.name=:name");
//设置参数
Student student = (Student) query.uniqueResult();
Query queryFilter = session.createFilter(student.getAttendClass(), "where this.time between :startTime and :endTime");
//设置参数
student.setAttendClass(queryFilter.list());真实的HQL可能会很大,拼接很麻烦。不知道两种方式那个比较好一些。第二种方式会产生两次查询,这肯定比不上第一种,不过“麻烦”程度感觉要小一点。拼接HQL很麻烦。