Wie

2017-11-24 7 views
0
Gewerkschaften aus verschiedenen Tabellen in QueryDSL tun

meine Frage einfach ist, wie kann ich aus verschiedenen Tabellen auswählen zum Beispiel SQL QueryDSL mitWie

SELECT cat.name as name, cat.voice as voice , cat.purr FROM cat UNION 
SELECT dog.name as name, dog.voice as voice , NULL as voice FROM dog; 
+0

Was ist los mit was Sie gepostet haben, abgesehen von der Tatsache, dass Sie den gleichen Spaltenalias zweimal in Ihrem zweiten SELECT verwendet haben? –

+0

meine Frage, wie man es in QueryDSL macht, weil ich keine Dokumente auf der offiziellen Seite finalisieren konnte – Karim

+0

Und meine Frage ist * Was ist los mit dem, was du hier gepostet hast? * Hast du es versucht? Funktioniert es? –

Antwort

1

So etwas sollte funktionieren

QCat cat = QCat.cat; 
QDog dog = QDog.dog; 

StringPath name = Expressions.stringPath("name"); 
StringPath voice = Expressions.stringPath("voice"); 
StringPath purr = Expressions.stringPath("purr"); 

SQLQueryFactory queryFactory = new SQLQueryFactory(MySQLTemplates.DEFAULT, null); 
SQLQuery<Tuple> cats = 
    SQLExpressions.select(cat.nome.as(name), cat.voice.as(voice), cat.purr.as(purr)).from(cat); 
SQLQuery<Tuple> dogs = 
    SQLExpressions.select(
      dog.nome.as(name), 
      dog.voice.as(voice), 
      Expressions.as(Expressions.nullExpression(), purr)) 
     .from(dog); 
queryFactory.select(name, voice, purr).from(SQLExpressions.union(cats, dogs)).fetch();