2016-11-17 5 views
0

私は以下のHQLを持っています。日付カラムとnullを比較する方法を知りたいと思います。たとえば、givenTimeパラメータがnullの場合はどうなりますか?私は空の結果を確認しました。それはいつものケースですか?それは文書化されていますか?Hibernate HQLはタイムスタンプとヌルを比較します

select mo from MyClassMO mo 
where mo.creationDate is not null and mo.creationDate >= (:givenTime) 

と何givenTimeはnullを返し、内部選択クエリに置き換えている場合? ありがとう

+0

givenTimeがNULLである場合は、手動で管理する必要があります。 –

答えて

0

パラメータがNULL可能な場合は、手動で管理する必要があります。

適用されたロジックのベースで、クエリを記述できます。

私はいくつかの場合(あなたがこれらのいずれかであるかどうかを教えてください)と思います。

ケース1:あなたはこのクエリをwirteできるフィルタで

をgivenTimeを考慮していない:

String hql = "select mo from MyClassMO mo" + 
    " where mo.creationDate is not null"; 

if (givenTime != null) { 
    hql += " and mo.creationDate >= (:givenTime)"; 
} 

ケース2:givenTimeがnullの場合、現在の日付を入れて

String hql = "select mo from MyClassMO mo" + 
    " where mo.creationDate is not null " + 
    " and mo.creationDate >= COALESCE(:givenTime, current_date())"; 

ケース3:givenTimeがサブクエリにある場合はnullを返し、現在の日付

String hql = "select mo from MyClassMO mo" + 
    " where mo.creationDate is not null " + 
    " and mo.creationDate >= " 
    " (SELECT COALESCE(:giventime, current_date()) " + 
    " FROM yourtable WHERE conditions"; 
+0

と、nullを返す内部選択クエリでgivenTimeを置き換えた場合はどうなりますか? – user1116377

0

私はあなたがHQLについて尋ねたが、そのような場合を扱うため、私は休止状態で何かと呼ばれる基準を使用して好む知っているを置きます。 SQLと簡単に混在することができます。

JPA and Hibernate - Criteria vs. JPQL or HQL

Criteria criteria = session 
      .createCriteria(MyClassMO.class) 
       .add(Restrictions.isNotNull("creationDate")); 
if (givenTime!=null){ 
    criteria.add(Restrictions.ge("creationDate", givenTime));//ge - greater equals 
} 
List<MyClassMO> result = criteria.list(); 
+0

、nullを返す内部選択クエリでgivenTimeを置き換えた場合はどうなりますか? – user1116377