[JPA] SELECT wert IF

Status
Nicht offen für weitere Antworten.

The_S

Top Contributor
Hi-Ho zusammen,

ich muss einen etwas komplizierteren Query schreiben. In diesem Query möchte ich einen zusätzlichen Wert zurückgeben, falls eine bestimmte Bedingung erfüllt ist (ansonsten 0). Sehr stark vereinfacht sowas (JPA-Pseudo-NamedQuery):

[HIGHLIGHT="SQL"]SELECT a, IF (a.mark = 'F' AND b.mark = 'C') THEN a.value - b.value ELSE 0
FROM A a, B b[/HIGHLIGHT]

Bekomm ich sowas mit JPA hin, und falls ja wie (evtl. irgendwie über Subquerys!?).

Danke!
 

KSG9|sebastian

Top Contributor
Code:
        List<Object[]> l = session.createQuery("select p.name, (select p2.oid from Parent p2 where p.oid = p2.oid and p2.oid='parent-1') from Parent p").list();
        for(Object[] o : l){
            for(Object o2 : o){
                System.out.println(o2);
            }
            System.out.println("---");
        }

Ausgabe:

Code:
name-1
parent-1
---
name-2
null
---

Ist allerdings Hibernate..ob's mit JPA-QL auch geht weiß ich nicht sicher..
 

The_S

Top Contributor
Danke schonmal.

Problem ist, dass ich momentan nur mit Hibernate testen kann, das Ganze aber später auf nem SAP NetWeaver-Server laufen soll. Standard-JPA wäre also schön. Außerdem ist mir noch aufgefallen, dass ich für diese Berechnung zwingend zwei Werte addieren muss - was laut JPA auch nicht geht :p
 

KSG9|sebastian

Top Contributor
Tja..deshalb bin ich kein Freund von JPA. Erstens fehlt die Hälfte und zweitens sind viele Verhaltensweisen nichtmal spezifiziert. Und JPA 2.0 wird imho auch nicht so die Glückseligkeit bringen..
Fazit: Ich verwende weiter Hibernate, den PersistenceProvider will ich sowieso nicht so schnell tauschen :)
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen


Oben