2010-10-22 87 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