Hibernate findById的问题

时间:2010-07-22 09:48:18

标签: java hibernate

hibernate有一个特殊的问题。我有这样的休眠函数。

@SuppressWarnings("unchecked")
public List<AppResponse> findByResponseId(long requestId) {
  return (List<AppResponse>) jdbcReference.getSessionFactory().getCurrentSession()
        .createCriteria(AppResponse.class).add(Restrictions.eq("requestId",requestId))
        .list();
 }

对于requestId =说' 1234 ',这应该返回一个包含4“ AppResponses ”的列表。预期的函数返回一个包含四个AppResponse对象的列表。但问题是所有4个对象代表同一行。我没有4个不同的对象(每行一个)。 有没有人遇到过这样的问题。可能是什么问题?

1 个答案:

答案 0 :(得分:2)

“id”让我觉得“主键”。在这种情况下,您不应该返回任何内容的列表 - 它可以是唯一的对象,也可以不是。

您的“1234”听起来像是没有主键切换的候选键。它应该有一个索引,并使用带有WHERE子句的查询进行提取。

更新:您是否正确覆盖了equals和hashCode?当你说它们代表同一行时,它告诉我你的表中有重复的数据(你引用的“id”之外的对象没有任何独特之处)或者你没有正确地实现equals和hashCode。 / p>