1.有个大大提高性能的建议:
比如得到list 是5个班级,然后要得到5个班级的所有学生
垃圾办法:5次通过级联获得,等于执行5条sql语句
好办法:
this
.getSession().createQuery(
"
from User a,Clazz b where a.clazz=b and b in(:clazz)
"
)
.setParameterList(
"
clazz
"
, list)
.list();
仅执行一条
2.还有个很实用的方法,如何通过hql语句返回多个po
List list
=
this
.getSession().createQuery(
"
from User a,Clazz b where a.clazz=b
"
).list();
//
使用的时候:
Iterator it
=
list.iterator();
while
(it.hasNext()){
Object[] vo
=
(Object[])it.next();
User user
=
(User)vo[
0
];
Clazz clazz
=
(Clazz)vo[
1
];
System.out.println(user.getUserName()
+
"
,
"
+
clazz.getClassName());
}
3.我们全部用一对一,多对一等。如果过滤有问题,有个办法
List students
=
this
.getSession().createFilter(clazz.getStudents(),
"
where this.status='A'
"
).list();