1

我有一个名为 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是否支持这个,如果有如何修改,还有没有更好的方法来解决这种情况?

4

0 回答 0