2016-04-27 13 views
-2

Ich habe eine Abfrage, wo ich WITH-Klausel verwendet, um Ergebnisse zu generieren.Wie schreibe ich mit Klausel mit Kriterien im Ruhezustand

WITH employee AS (SELECT * FROM Employees) 
SELECT * FROM employee WHERE ID < 20 
UNION ALL 
SELECT * FROM employee WHERE Sex = 'M' 

Könnten Sie bitte jemand lassen Sie mich wissen, wie diese Abfrage in den Ruhezustand schreiben Kriterien besonders, wenn sie mit Klausel in Abfrage.

+0

Ich bin ein bisschen verwirrt bei dem, was Sie hier erreichen möchten. Ist das Ziel, eine Ergebnismenge zu erreichen, die alle "männlichen" Mitarbeiter und alle Mitarbeiter mit einer ID von weniger als 20 hat (unabhängig von "Sex")? –

+0

Ich bin nach dem Zufallsprinzip abgeholt Abfrage ich bin nicht besorgt über die wo Bedingung möchte ich wissen, Syntax zu schreiben WITH-Klausel in Kriterien [email protected] –

Antwort

0

Zuerst haben Sie Ihre SQL dramatisch überkompliziert. Hier ist, wie Sie Ihre Abfrage in reiner SQL aussehen sollte:

SELECT * FROM Employees WHERE ID < 20 or Sex = 'M' 

Als nächstes vorausgesetzt, Sie eine Hibernate Einheit haben (sie es Employee.java jetzt nennen), Ihre HQL entsprechen würde:

from Employee e where e.id < 20 or e.sex = 'M' 

es zu tun Mit einem Criteria, würden Sie Folgendes tun:

final Criteria criteria = getSession().createCriteria(Employee.class); 
criteria.add(Restrictions.or(
     Restrictions.lt("id", 20), 
     Restrictions.eq("sex", "M") 
    ) 
); 
criteria.list(); 
+0

Aber wir tun Abfrage tuning wo wir verwendet ** MIT ** Klausel, so dass ich nach dem Zufallsprinzip wählte eine einfache Abfrage aus. Ich brauche die Syntax, wie man WITH-Klausel mit Kriterien schreibt. Könnten Sie bitte lassen Sie mich wissen @Dean Clark. –

+0

Die kurze Antwort ist, dass Sie nicht können. Stattdessen sollten Sie eine Datenbankansicht erstellen und diese anstelle Ihres WITH verwenden. Dann können Sie eine neue Entität codieren, die die Datenbankansicht abbildet und diese Klasse für Ihre Kriterien verwendet. –

Verwandte Themen