代码之家  ›  专栏  ›  技术社区  ›  chedine

Hibernate FindByID有问题

  •  0
  • chedine  · 技术社区  · 16 年前

    冬眠有一个特殊的问题。我有这样的冬眠功能。

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

    这应该是一个4英寸的列表 扣押 “对于RequestID=说” 一千二百三十四 '.函数按预期返回一个包含四个响应对象的列表,但问题是所有4个对象都代表同一行。我不会得到4个不同的物体(每行一个)。 有人遇到过这样的问题吗?有什么问题?

    1 回复  |  直到 16 年前
        1
  •  2
  •   duffymo    16 年前

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

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

    更新:是否正确重写了equals和hashcode?当你说它们代表同一行时,它建议我要么你的表中有重复的数据(除了你引用的“id”之外的对象没有任何唯一的数据),要么你没有正确地实现equals和hashcode。