JPA:如何根据ID以外的字段值获取实体?

新手上路,请多包涵

在JPA(Hibernate)中,当我们自动生成ID字段时,假设用户不知道这个key。因此,在获取实体时,用户会根据ID以外的某些字段进行查询。在那种情况下我们如何获得实体(因为不能使用 em.find() )。

我知道我们可以使用查询并稍后过滤结果。但是,有没有更直接的方法(因为据我了解这是一个非常普遍的问题)。

原文由 Neo 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 610
1 个回答

正如您所说,这不是“问题”。

Hibernate 具有内置的 find() ,但您必须构建自己的查询才能获取特定对象。我推荐使用 HibernateCriteria

 Criteria criteria = session.createCriteria(YourClass.class);
YourObject yourObject = criteria.add(Restrictions.eq("yourField", yourFieldValue))
                             .uniqueResult();

这将在您当前的班级上创建一个 criteria ,添加“yourField”列等于值 yourFieldValue 的限制。 uniqueResult() 告诉它带来一个独特的结果。如果有更多对象匹配,您应该检索一个列表。

 List<YourObject> list = criteria.add(Restrictions.eq("yourField", yourFieldValue)).list();

如果您有任何其他问题,请随时提出。希望这可以帮助。

原文由 Raul Rene 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题