2012-04-05 7 views
0

Ich muss eine generische NamedQuery schreiben; So finden Sie mir alle Objekte, in denen eines der Attribute mit dem angegebenen Parameter übereinstimmt.WHERE Parameter gleich ANY Spalte (Entity Attribut) Wert

wählen mo von MyObject mo wo mo.ANYAttribute = someParameter

Ich konnte nicht den Ausdruck für "wo mo.ANYAttribute" herauszufinden. Die Art von Wildcard wie "+ oder * oder ANY oder.) ... Etwas, das mich vor dem Schreiben von Abfrage speichern wird, wo ich manuell für jedes Attribut wie z. B schreiben schreiben muss:

wo mo.attribute1 =: someParameteror oder mo.attribute2 =:. someParameter

ich bin mit JPA 2.0

Ist es möglich, auf diese Weise, oder ich muss meinen Ansatz ändern

Vielen Dank, Nav

Antwort

0

Sie benötigen? um alle aufzulisten Huldigungen eines Unternehmens, gibt es nicht so etwas wie anyAttribute in JPA:

where mo.attr1=:someParamter or mo.attr2=:someParameter etc. 
+0

Stimmt, könnte so gemacht haben; aber ich suche etwas wie eine Wildcard wie ANY/* – mhan

+0

Kein anderer Weg. Es ist nicht XSLT. –

+0

Hoppla :) Alles, was ich verwenden kann, um den Entity Manager anzudeuten, dass alle Felder der Entität übereinstimmen? Ich versuche dies zu tun, da ich die Abfrage als generische Suche nach den Protokollen wählen kann, die wir in unserer Datenbank behalten. – mhan

0

Hier ein Beispiel für @NamedQuery Verwendung mit Parametern:

Anmerken Ihr Unternehmen mit:

@NamedQuery(name = "findEntityById", 
query = "SELECT entity FROM Entity entity WHERE entity.id = :inputId") 

Entity Manager Nutzung:

Query namedQuery = entityManager.createNamedQuery("findEntityById"); 
namedQuery.setParameter("inputId", 1); 

A very good tutorial on NamedQueries.

+0

Danke JMelnik, ich sah es an. Ich habe meine Frage bearbeitet. Ich mache ein bisschen JPA, aber ich versuche eine generische Abfrage zu finden, die alle Attribute erfüllt, ohne dass ich den Hardcode für alle Matches mache. – mhan

Verwandte Themen