我想要写一个SELECT语句,但无法弄清楚如何写在where子句选择查询...JPA与where子句
我的代码:
CriteriaQuery query = entityManager.getCriteriaBuilder().createQuery();
query.select(query.from(SecureMessage.class)).where();
这是一个方法内我正在传递一个字符串。我只想获取匹配Im传递给方法的字符串值的行。
我想要写一个SELECT语句,但无法弄清楚如何写在where子句选择查询...JPA与where子句
我的代码:
CriteriaQuery query = entityManager.getCriteriaBuilder().createQuery();
query.select(query.from(SecureMessage.class)).where();
这是一个方法内我正在传递一个字符串。我只想获取匹配Im传递给方法的字符串值的行。
据我所知,方法参数应该是查询的参数。
所以,应该是这样的:
Query query = entityManager.getCriteriaBuilder().createQuery("from SecureMessage sm where sm.someField=:arg1");
query.setParameter("arg1", arg1);
其中arg1
- 你的方法字符串参数
这并不适用于我的队友......事实上,你的第一行甚至不会编译..如果我删除了getCriteriaBuilder()它编译但仍然不运行查询..throws javax.faces.el.EvaluationException: javax.ejb.EJBException异常 – mixkat 2011-02-28 05:40:22
在标准这是一样的东西:
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
实际上,这里没有任何关联到JSF的问题。这是JPA语法的问题。 – sergionni 2011-02-27 22:47:22