2010-10-22 399 views
56

我一直在試圖找到一個JPA Criteria API教程,但一直都沒有成功。你知道任何初學者嗎?我想開始在Java5/Maven應用程序中使用它來構建複雜的搜索查詢。JPA標準教程

+1

相關係數1.0 – HDave 2014-11-29 23:55:14

回答

95

Dynamic, typesafe queries in JPA 2.0文章是關於這一主題非常好,其實最好的一個,我發現到目前爲止在線,比Chapter 23 Using the Criteria API to Create Queries從Java EE 6教程更好(包含一些錯誤)。常用查詢

+2

@HDave Oracle的EE7鏈接到標準API已經變爲[https://docs.oracle.com/ javaee/7/tutorial/persistence-criteria.htm#GJITV](https://docs.oracle.com/javaee/7/tutorial/persistence-criteria.htm#GJITV) – skomisa 2015-01-03 16:04:44

12

例子是here

所有的例子都是這種形式:

CriteriaBuilder cb = em.getCriteriaBuilder(); 

// Query for a List of objects. 
CriteriaQuery cq = cb.createQuery(); 
Root e = cq.from(Employee.class); 
cq.where(cb.greaterThan(e.get("salary"), 100000)); 
Query query = em.createQuery(cq); 
List<Employee> result = query.getResultList(); 

如果你也正在考慮其他的技術,你應該認真考慮querydsl。與標準相比,主要優點包括代碼更短,可讀性更好,並且與常規sql語法相似。

例QueryDSL代碼在這裏:偏離主題的和有用==之間

JPAQuery query = new JPAQuery(entityManager); 
List<Person> persons = query.from(person) 
    .where(
    person.firstName.eq("John")),   
    .list(person); 
+0

你的第一個例子拋出「沒有明確的選擇和一個隱含的一個不能確定「exeption – Irakli 2016-12-03 09:10:48

+0

'。其中('此處打開的托架不關閉。 – Alex78191 2018-01-22 23:33:43