JPA 选择查询与 where 子句

2022-09-03 09:13:19

我想写一个select语句,但不知道如何写where子句...

我的代码:

CriteriaQuery query = entityManager.getCriteriaBuilder().createQuery();
query.select(query.from(SecureMessage.class)).where();

这是在我传递字符串的方法中。我只想获取与 Im 传递给该方法的字符串的值匹配的行。


答案 1

在“条件”中,如下所示:

CriteriaBuilder cb = entityManager.getCriteriaBuilder();
CriteriaQuery<SecureMessage> query = cb.createQuery(SecureMessage.class);
Root<SecureMessage> sm = query.from(SecureMessage.class);
query.where(cb.equal(sm.get("someField"), "value"));

在 JPQL 中:

Query query = entityManager.createQuery("Select sm from SecureMessage sm where sm.someField=:arg1");
query.setParameter("arg1", arg1);

看,http://en.wikibooks.org/wiki/Java_Persistence/Querying#Criteria_API_.28JPA_2.0.29


答案 2

据我所知,方法参数应该是查询的参数。

所以,应该看起来像这样:

Query query = entityManager.getCriteriaBuilder().createQuery("from SecureMessage sm where sm.someField=:arg1");
query.setParameter("arg1", arg1);

其中 - 您的方法字符串参数arg1


推荐