JPA Where Bedingung dynamisch basteln

  • Themenstarter Themenstarter Alex_1900
  • Beginndatum Beginndatum
A

Alex_1900

Gast
Hallo,

ich bin Anfänger bei JPA und frage mich ob es unter Verwendung von JPA möglich ist
eine Where bedingung dynamisch erstellen zu lassen.

Ich habe folgende Situation:
ich möchte eine Suche implementieren. Diese Suche hat viele Felder die alle optional sind.
Nun kann der Benutzer also nur ein Feld von Zehn füllen.

D.h. zb
FELD : Wert
Alter : 21
Name : null
Vorname : null
Stadt : null

Beim Erstellen der Query benötigt man ja einen QueryString.
Java:
String queryString = "SELECT* FROM PERSON WHERE alter = "+Person.ALTER+" AND name "+Person.NAME;
Query query = manager.createQuery(queryString);

Wenn ich diesen String erstelle und dann die Platzhalter so setze
Java:
query.setParameter(Person.ALTER, "hier kommt der eingegeben Wert von der UI"); //-->21
query.setParameter(Person.NAME, "hier kommt der eingegeben Wert von der UI");//-->null
...

Bekomme ich als Reinen SQL String folgendes :

SQL:
Select * FROM PERSON WHERE alter = 21 and name = null AND ...

Damit bekomme ich natürlich kein Ergebniss.
Ich möchte also eine dynamisch erstellte Where Bedingung die alle NULL Werte erst gar nicht in die Bedingung aufnimmt.

Gibt es da etwas dazu direkt von JPA oder muss ich soetwas selber implementieren?
 
Vielen Dank maki,
Criteria API sieht viel versprechend aus.
Geht aber leider erst ab JPA 2.0 so wie ich das sehe.

Gibt es auch Lösungen für JPA 1.0?
 
Welchen JPA Provider nutzt du denn (Hibernate, Eclipselink etc. pp.)?

Denke du wirst da direkt auf die Implementierung zurückgreifen und die JPA Abstraktion verlassen müssen.
 
Ich verwende SAP JPA.

Selbst wenn diese Funktion nicht unter SAP JPA vorhanden ist, gibt es soetwas unter EclipseLink bzw. Hibernate?
 

Zurück
Oben