1

我有一个名为 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();
}
4

1 回答 1

0

您应该创建示例和两个 createCriteria 调用以同时使用学生和学校:

@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);
于 2014-01-11T09:16:16.313 回答