我有一个简单的Criteria
用于获得学生的学校我有ID我只需要学校而不是学生我有一个简单的编码,如
public School loadSchool(Integer studentID)
{
final Session session = getHibernateTemplate().getSessionFactory().openSession();
final Criteria like = session.createCriteria(Student.class)
.add(idEq(studentID))
.setFetchMode("School",FetchMode.JOIN);
final School retValue = ((Student)like.uniqueResult()).getSchool();
session.close();
return retValue;
}
你可以看到我检索Student and the School
我只需要School
我的问题
1)。我可以提取[{1}}以外的其他方法,只能setProjections()
而不是School fields
提取[{1}}而不是Student fields
,因为有许多字段,并且是一种烦人的列出所有字段setProjection
并影响
setProjectionOnlyPropertiesForClass(School.class)
。
2)。有任何解决方法。
非常感谢。
答案 0 :(得分:1)
问题是您正在查询Student对象而不是School对象!相应的HQL查询是:
select student
from Student student join student.school
where student.id=:studentId
相反,您应该查询School对象:
select school
from School school, Student student
where student.school = school and student.id=:studentId
(也许你应该使用HQL代替标准查询 - 它们更容易编写和理解)。