在JPA(Hibernate)中,当我们自动生成ID字段时,假设用户不知道这个key。因此,在获取实体时,用户会根据ID以外的某些字段进行查询。在那种情况下我们如何获得实体(因为不能使用 em.find()
)。
我知道我们可以使用查询并稍后过滤结果。但是,有没有更直接的方法(因为据我了解这是一个非常普遍的问题)。
原文由 Neo 发布,翻译遵循 CC BY-SA 4.0 许可协议
15 回答8.4k 阅读
8 回答6.2k 阅读
1 回答4k 阅读✓ 已解决
3 回答6k 阅读
3 回答2.2k 阅读✓ 已解决
2 回答3.1k 阅读
2 回答3.8k 阅读
正如您所说,这不是“问题”。
Hibernate 具有内置的
find()
,但您必须构建自己的查询才能获取特定对象。我推荐使用 Hibernate 的Criteria
:这将在您当前的班级上创建一个
criteria
,添加“yourField”列等于值yourFieldValue
的限制。uniqueResult()
告诉它带来一个独特的结果。如果有更多对象匹配,您应该检索一个列表。如果您有任何其他问题,请随时提出。希望这可以帮助。