我想要寫一個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