0

startDate 列が DateTime よりも小さく、endDate 列が DateTime よりも大きい DateTime オブジェクトに基づいて、休止状態でエントリを見つけようとしています。以下のコードを使用してこれを試みています

    DetachedCriteria crit = DetachedCriteria.forClass(FinancialEventGroup.class);
    crit.add(Property.forName("groupPeriodStart").lt(eventDate));
    crit.add(Property.forName("groupPeriodEnd").gt(eventDate));

しかし、これはすべきでないときに null を返しています。助言がありますか?他の DO アクセス方法は機能しているため、これは休止状態の構成の問題ではありません

編集:以下のヘルプのおかげで、問題の一部がわかりました。グループ期間の終了が空でない場合 (つまり、これが終了していないオープン期間である場合) にのみ、eventDate を groupPeriodEnd よりも小さくしたいという別の問題に直面しています。休止状態にXOR/どちらかの制限はありますか? これを行う方法はありますか、それとも結果をフィルタリングするだけですか?

4

2 に答える 2

0

そのままの基準では、常に0レコードを返すクエリが生成されます。データ型に関係なく、テーブル内の 1 つのフィールドが特定の値よりも大きく、同時にそれより小さいことはありません... /の代わりにleorを使用することをお勧めします。geltgt

于 2013-08-10T20:54:16.060 に答える
0

プロパティの代わりに制限を使用し、ge/le(>= / <=)

 DetachedCriteria crit = DetachedCriteria.forClass(FinancialEventGroup.class);
    crit.add(Restrictions.le("groupPeriodStart",eventDate);
    crit.add(Restrictions.ge("groupPeriodEnd",eventDate);
于 2013-08-10T20:55:35.760 に答える