java - Hibernate findById 的问题

标签 java hibernate

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();
 }

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

最佳答案

“id”让我想到“主键”。在这种情况下,您不应该返回任何内容的列表 - 它要么是唯一的对象,要么什么都没有。

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

更新:您是否正确覆盖了 equals 和 hashCode?当你说它们代表同一行时,它向我表明要么你的表中有重复的数据(除了你引用的“id”之外的对象没有什么独特之处),要么你没有正确实现 equals 和 hashCode。

关于java - Hibernate findById 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3307557/

相关文章:

java - Primefaces 数据表分页不起作用

java - 配置hibernate 3.6依赖项

java - 在事件发生时将自定义对象存储在 JLabel 中

Java String 完成数学求和

java - 如何使用 surefire 插件在自定义文件夹结构中运行测试

java - Envers AuditReader 阅读器失败

java - JPA OneToMany-Mapping 没有多边映射类

java - RabbitMQ Spring 死信配置不起作用

hibernate - Kotlin Hibernate OneToOne fetchtype.LAZY 立即运行所有查询

java - 多对多 : MappingException: Could not determine type for: java. util.List