JPA:如何根据 ID 以外的字段值获取实体?
在JPA(休眠)中,当我们自动生成ID字段时,假设用户对此键一无所知。因此,在获取实体时,用户将基于ID以外的某些字段进行查询。在这种情况下,我们如何获取实体(因为不能使用)。em.find()
我知道我们可以使用查询并在以后过滤结果。但是,有没有更直接的方法(因为据我所知,这是一个非常普遍的问题)。
在JPA(休眠)中,当我们自动生成ID字段时,假设用户对此键一无所知。因此,在获取实体时,用户将基于ID以外的某些字段进行查询。在这种情况下,我们如何获取实体(因为不能使用)。em.find()
我知道我们可以使用查询并在以后过滤结果。但是,有没有更直接的方法(因为据我所知,这是一个非常普遍的问题)。
正如你所说,这不是一个“问题”。
Hibernate具有内置的,但您必须构建自己的查询才能获得特定的对象。我建议使用Hibernate的:find()
Criteria
Criteria criteria = session.createCriteria(YourClass.class);
YourObject yourObject = criteria.add(Restrictions.eq("yourField", yourFieldValue))
.uniqueResult();
这将在当前类上创建一个,并添加“yourField”列等于值的限制。 告诉它带来独特的结果。如果匹配的对象更多,则应检索列表。criteria
yourFieldValue
uniqueResult()
List<YourObject> list = criteria.add(Restrictions.eq("yourField", yourFieldValue)).list();
如果您有任何其他问题,请随时提问。希望这有帮助。
如果您有实体的存储库,并且需要选择具有精确字符串值的所有条目(也适用于其他基元类型或实体类型)。将其放入您的存储库界面:Foo
boo
List<Foo> findByBoo(String boo);
如果您需要订购结果:
List<Foo> findByBooOrderById(String boo);
有关详细信息,请参阅参考。