我有一个名为 Question 的实体与 Answer 有一对多的关系
@Entity
@Table(name="question")
public class Question{
.....
@OneToMany
List<Answer> answers;
....
}
因为一个问题的答案太多,不可能一次显示所有的答案,但是如果你选择一个问题,所有相关的答案也会被加载,否则你必须指定你的代码来获取分别回答,像这样:
public List<Answer> fetchAnswers(Question q, int onePageRows, int currentPage){
int limitFrom = onePageRows * (currentPage - 1);
int limitTo = onePageRows * currentPage;
String sql = "from Answer where Question_id = ?";
SQLQuery query = sessionFactory.getCurrentSession().createSQLQuery(sql);
query.setInteger(0, q.getId());
query.setFirstResult(limitFrom);
query.setMaxResults(limitTo - limitFrom);
List<Answer> list = query.list();
return list;
}
我认为这种方式会“打破”问题和答案之间的一对多关系,我不会从 Hibernate3 中的这种关系中获得任何好处,
我在想是否有这样的方法:
Question q = questionService.getLastQuestion();
List<Answer> list = q.getAnswers().fetch(startPos, endPos);
但是,虽然调用 g.getAnswers() 并不意味着将所有答案检索到列表中,然后再次从列表中选择一个范围。
我不知道Hibernate 3是否支持这个,如果有如何修改,还有没有更好的方法来解决这种情况?