JPA选择查询与where子句

时间:2011-02-27 22:10:01

标签: java jpa

我想编写一个select语句,但无法弄清楚如何编写where子句......

我的代码:

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

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

2 个答案:

答案 0 :(得分:22)

在Criteria中,这就像:

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

答案 1 :(得分:17)

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

所以,应该看起来像:

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

其中arg1 - 您的方法String参数