2010-10-22 34 views
56

J'ai essayé de trouver un didacticiel de l'API JPA Criteria, mais je n'ai pas eu beaucoup de succès. Savez-vous à propos de tout pour les débutants? Je voudrais commencer à l'utiliser dans une application Java5/Maven pour créer des requêtes de recherche complexes.Didacticiel sur les critères JPA

+1

Coefficient de corrélation entre hors-sujet et l'utilité == 1.0 – HDave

Répondre

95

Le Dynamic, typesafe queries in JPA 2.0 article est un très bon sur ce sujet, en fait le meilleur que j'ai trouvé jusqu'à présent en ligne, encore mieux que le Chapter 23 Using the Criteria API to Create Queries des tutoriels Java EE 6 (qui contient quelques erreurs).

+2

@HDave lien EE7 d'Oracle à l'API Criteria a changé pour [https://docs.oracle.com/ javaee/7/tutorial/persistence-criteria.htm # GJITV] (https://docs.oracle.com/javaee/7/tutorial/persistence-criteria.htm#GJITV) – skomisa

12

Des exemples de requêtes communes sont here

Tous les exemples sont sous cette forme:

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(); 

Si vous envisagez également d'autres technologies, vous devriez envisager sérieusement querydsl. Les principaux avantages par rapport aux critères incluent un code plus court, une bonne lisibilité et une syntaxe similaire à sql standard.

Exemple Code QueryDSL ici:

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

votre premier exemple lance "Aucune sélection explicite et un implicite on ne pouvait pas être déterminé "exeption – Irakli

+0

' .where ('le support ouvert ici ne se ferme pas. – Alex78191