3つの条件を含むHibernate基準制限を作成する必要があります。問題は、最後の条件がAND演算子を使用した条件に実際に一致することです。
私の最初の条件:
Criterion startInRange = Restrictions.between("expectedStartCanonicDate",
rangeStart, rangeEnd);
私の2番目の条件:
Criterion endInRange = Restrictions.between("expectedCompletionCanonicDate",
rangeStart, rangeEnd);
私の3番目の条件は、次の2つの条件を一緒にする必要があります。
criteria.add(Restrictions.le("expectedStartCanonicDate", rangeStart));
criteria.add(Restrictions.ge("expectedCompletionCanonicDate", rangeEnd));
私がやりたい制限は、condition1またはcondition2またはcondition3です。私は私を近づける例を見つけました。 LogicalExpressionを使用して、または最初の2つの条件を一緒に使用できますが、特に最後の条件が実際には2つの別々の条件 'or
'である場合、3つの条件をanded
3つの条件にする方法がわかりません。 。
何かご意見は?フレッド
or
にリンクされた一連の制限は、論理和と呼ばれます。 and
にリンクされた一連の制限は、接続詞と呼ばれます。
だから、あなたが必要なのは
だからここに行く:
Criterion startInRange = Restrictions.between("expectedStartCanonicDate", rangeStart, rangeEnd);
Criterion endInRange = Restrictions.between("expectedCompletionCanonicDate", rangeStart, rangeEnd);
Criterion thirdCondition =
Restrictions.conjunction().add(Restrictions.le("expectedStartCanonicDate", rangeStart))
.add(Restrictions.ge("expectedCompletionCanonicDate", rangeEnd));
Criterion completeCondition =
Restrictions.disjunction().add(startInRange)
.add(endInRange)
.add(thirdCondition);
criteria.add(completeCondition);
Criteria criteriaObj = sessionselectreply.createCriteria(TaskReplyVO.class,"taskreply")
.createAlias("taskreply.objTaskView", "taskview")
.createAlias("objMailTo", "mailto")
.add(Restrictions.eq("taskview.longTaskId", taskid))
.add(Restrictions.eq("mailto.longuserid", userid));