(hibernate) UNION dem Dialekt hinzufügen

LadyMilka

Aktives Mitglied
Hallo,

Ich weiß das Hibernate derzeit den UNION nicht unterstütz ähnlich diverser Datumsfunktionen.

Ich habe meinen dialect erweitert mit einer Klasse:
Java:
public class Dialect extends MySQLDialect{
    public Dialect(){
        registerFunction("date_add_interval", new SQLFunctionTemplate(Hibernate.DATE, "DATE_ADD(?1, INTERVAL ?2 ?3)"));
        registerFunction("my_date_format", new SQLFunctionTemplate(Hibernate.DATE, "DATE_FORMAT(?1, ?2)"));
    }
}

Bei den hibernate.properties hab ich denn meine Klasse als Dialect zugewiesen.

nun überlege ich, ob man dies auch mit dem UNION machen könnte?
Java:
registerFunction("my_union", new SQLFunctionTemplate(Hibernate.???, "(?1)UNION(?2)"));
Welchen Hibernate-Typ brauch ich dafür?
Oder gibt es andere Wege ein UNION zu simulieren?

Edit: Wenn ich das UNION einfach in der Query stehen lasse, wandelt hibernate nur den ersten Select um
 
Zuletzt bearbeitet:
ich hab mir jetzt selbst geholfen.

Dem Dialect hinzufügen geht nicht so, wie ich mir das gedacht hatte.
Ich umgehe den UNION jetzt, indem ich beide SELECT-befehle separat abfrage und in zwei getrennte Listen zwischenlagere, diese beiden Listen füg ich dann zusammen.
Java:
list1.addAll(list2);
 
Ja, das Problem ist das die Funktionen für Hibernate-Dialekte relativ stark einschränken was machbar ist.

In aller Regel nur sowas wie MEINE_FUNKTION(PARAMETER1 PARAMETER2).

Viel mehr geht damit leider nicht.
 

Zurück
Oben