2015-11-25 1 views
1

Je crée un service REST, c'était simple au début, mais maintenant je veux obtenir des lignes de table avec une valeur spécifique dans une colonne.NamedQueries WHERE instruction EQUALS dans JPA REST

Voici un exemple des namedqueries que j'ai maintenant:

@NamedQuery(name = "ExampleTable.findAll", query = "SELECT e FROM ExampleTable e"), 
@NamedQuery(name = "ExampleTable.findById", query = "SELECT e FROM ExampleTable e WHERE e.id = :id"), 
@NamedQuery(name = "ExampleTable.findByAmlClientCategory", query = "SELECT e FROM ExampleTable e WHERE e.amlClientCategory = :amlClientCategory"), 
@NamedQuery(name = "ExampleTable.findByClientId", query = "SELECT e FROM ExampleTable e WHERE e.clientId = :clientId") 

Maintenant, si je veux trouver par valeur AmlClientCategory spécifique au lieu, permet de dire toutes les lignes qui contiennent un « 1 » dans la colonne AmlClientCategory, comment je fais ça? Je suis this guide pour créer mon service REST.

Toute aide est très appréciée!

+0

Vous travaillez en JPA avec des entités et non avec des tables SQL. Est-ce que 'e.amlClientCategory' est une entité ou une chaîne? –

+0

@Andreil C'est une entité je pense, j'ai une (a) entité au-dessus d'eux tous –

+1

Je ne pense pas. ça devrait toujours être une chaîne. –

Répondre

2

Vous pouvez l'exécuter comme celui-ci (en supposant AmlClientCategory est une chaîne):

List<ExampleTable> results = em.createNamedQuery("ExampleTable.findByAmlClientCategory", ExampleTable.class) 
    .setParameter("AmlClientCategory", "1") 
    .getResultList(); 
+0

c'est dans la façade droite? –

+0

@ Somethingcool123 Correct, vous pouvez placer ceci dans la classe Facade –

1

Utilisez le code ci-dessous dans votre classe d'implémentation DAO.

Query query= entityManager.createNamedQuery("ExampleTable.findByAmlClientCategory"); 
query.setParameter("AmlClientCategory", "1"); 
Collection result = query.getResultList(); 

Ici, vous pouvez définir plusieurs arguments pour votre NamedQuery.