我有一个名为getByTemplate的dao方法。有两个表是学生和学校。这些表之间存在一对多的关系。我想做的是;
Student student = new Student();
student.setSchool(mySchool);
myDao.getByTemplate(student);
但问题是Hibernate在查询时会忽略对象。所以这个方法返回db的所有学生。有没有办法使用示例模型进行此查询?
@Transactional(readOnly = true)
public <T> List<T> getByTemplate(T templateEntity) {
Criteria criteria = getCurrentSession().createCriteria(templateEntity.getClass());
criteria.add(Example.create(templateEntity));
return criteria.list();
}
答案 0 :(得分:0)
您应该创建示例和两个createCriteria调用以同时使用Student和School:
@Transactional(readOnly = true)
public <T,U> List<T> getByTemplate(T templateEntity1, U templateEntity2) {
Criteria criteria = getCurrentSession()
.createCriteria(templateEntity1.getClass()).add(Example.create(templateEntity1))
.createCriteria(templateEntity2.getClass()).add(Example.create(templateEntity2));
return criteria.list();
}
您可以通过以下方式调用它:
myDao.getByTemplate(student, mySchool);