2017-10-03 2 views
1

Ich mag die folgende Abfrage in HQL schreiben:wie Spalten aus mehreren Unterabfragen in Hibernate kombinieren

select v1.maxx, v2.maxx from 
    (select max(id) maxx from mytable where my_column is not null) v1, 
    (select max(id) maxx from mytable where my_column is null) v2; 

ich folgend bisher habe:

DetachedCriteria d1=DetachedCriteria.forClass(MyTable.class, "d1") 
     .setProjection(Projections.max("id")) 
     .add(Property.forName("myColumn").isNull(); 

    DetachedCriteria d2=DetachedCriteria.forClass(MyTable.class, "d2") 
     .setProjection(Projections.max("id")) 
     .add(Property.forName("myColumn").isNotNull(); 

Aber ich habe es ist schwierig, sie zu einem Kriterienobjekt zusammenzufassen.

Antwort

0

could't finden, wie mehrere Unterabfragen in SELECT aufzunehmen. Also habe ich die Abfrage wie folgt umgeschrieben und es funktioniert mit HQL:

select max(k.id), max(l.id) from myTable k, myTable l 
    where k.myColumn is not null and l.myColumn is null; 
0

Hier ist mein Ansatz Ihre beiden Unterabfragen zu kombinieren:

Criteria criteria = Criteria.forClass(MyTable.class); 
    criteria.add(Subqueries.propertyEq("v1.maxx", d2)); 
    criteria.add(Subqueries.propertyEq("v2.maxx", d1)); 
Verwandte Themen