List<T> results = em.createQuery("SELECT t FROM TABLE t", T.class).getResultList();
Avec les paramètres:
List<T> results = em.createQuery("SELECT t FROM TABLE t where t.value = :value1").setParameter("value1","some value").getResultList();
Pour seul résultat de les remplacer getResultList() avec getSingleResult():
T entity = em.createQuery("SELECT t FROM TABLE t where t.uniqueKey = :value1").setParameter("value1","KEY1").getSingleResult();
Une autre façon est d'utiliser des Critères de l'API.
Je vous remercie pour votre réponse. Je savais que je pouvais le faire avec une requête, je me demandais juste si je pouvais le faire plus vite avec moins de code en utilisant une méthode de la JPA, comme EntityManager.find().
try{TypedQuery<Bean> tq = em.createQuery("from Bean WHERE column=?",Bean.class);Bean result = tq.setParameter(1,"uniqueKey").getSingleResult();}catch(NoResultException noresult){//if there is no result}catch(NonUniqueResultException notUnique){//if more than one result}
Merci! Je n'ai pas utilisé TypedQuery avant. Je vais vérifier!
Vous pouvez utiliser une Requête, soit JPQL, des Critères ou SQL.
Vous ne savez pas si votre préoccupation est d'obtenir cache similaire à find(). Dans EclipseLink 2.4 cache indices ont été ajoutés pour vous permettre de l'indice de non-champs de clé primaire et d'obtenir l'accès au cache de JPQL ou de Critères.
Par exemple, comme ceci:
Avec les paramètres:
Pour seul résultat de les remplacer
getResultList()
avecgetSingleResult()
:Une autre façon est d'utiliser des Critères de l'API.
EntityManager.find()
.OriginalL'auteur maksimov
Vous pouvez utiliser des JPQL avec TypedQuery.
OriginalL'auteur Pau Kiat Wee
Vous pouvez utiliser une Requête, soit JPQL, des Critères ou SQL.
Vous ne savez pas si votre préoccupation est d'obtenir cache similaire à find(). Dans EclipseLink 2.4 cache indices ont été ajoutés pour vous permettre de l'indice de non-champs de clé primaire et d'obtenir l'accès au cache de JPQL ou de Critères.
Voir,
http://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Caching/Indexes
Avant 2.4 vous pouvez utiliser dans la mémoire des requêtes pour interroger le cache sur la non-champs id.
OriginalL'auteur James