2016-04-27 9 views
-2

私はWITH句を使用して結果を生成するクエリを持っています。休止状態で条件を使用して文節を書く方法

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

あなたはいずれかが、私は、クエリ内の句の存在とするとき、特別の基準を使用して休止状態でこのクエリを作成する方法を教えてくださいでした。

+0

私はここで達成しようとしていることに少し混乱しています。すべての「男性」従業員とIDが20未満のすべての従業員(「性別」に関係なく)を持つ結果セットを得るという目標はありますか? –

+0

私は無作為に選択されたクエリです。where条件に関してWITH句を書くための構文を知りたいと思っていません-0aryn.galadar –

答えて

0

まず、SQLを劇的に複雑化しました。ここにあなたのクエリは、純粋なSQLになります方法は次のとおりです。

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

次に、あなたは(今のところEmployee.javaそれを呼びましょう)Hibernateのエンティティを持っていると仮定すると、あなたのHQL相当は次のようになります。

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

それを行うにはCriteriaと入力すると、次のようになります。

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

しかし、私たちは** WITH ** Clauseを使ってクエリのチューニングを行っています。 1つの簡単なクエリを選択しました。私は、条件を使用してWITH句を書く方法の構文が必要です。 @Dean Clarkに教えてください。 –

+0

短い答えはできないということです。代わりに、データベースビューを作成してWITHの代わりに使用する必要があります。次に、データベースViewをマップする新しい 'Entity'をコード化し、そのクラスを' Criteria'に使用することができます。 –