1

これは、Hibernate の between 制約の通常の使用法です。

Criterion critDate = Restrictions.between("fromDatePropName", model.getFromDate(), model.getToDate()) ;

しかし、休止状態Objectで2つ以上の間の制約が必要です。propertyName

例:との'2011-10-01'間の日付が必要ですtableName.fromDatePropNametableName.toDatePropName

これは私が1つの方法でやりたいことです:

元:

Criterion critDate = Restrictions.between(model.getDate(), "fromDatePropName", "toDatePropName") ;

ビジュアル例:

生成された SQL は次のとおりです。

Criterion critDate = Restrictions.between("fromDatePropName", model.getFromDate(), model.getToDate()) ;
Criterion critDate = Restrictions.between(  "toDatePropName", model.getFromDate(), model.getToDate()) ;

...
AND tableName.fromDatePropName  between DATE '2011-10-01' and DATE '2011-10-31' 
AND tableName.toDatePropName    between DATE '2011-10-01' and DATE '2011-10-31' 
...

しかし、これは私が生成したいSQLです:

Criterion critDate = Restrictions.between(model.getDate(), "fromDatePropName", "toDatePropName") ;

...
AND DATE'2011-10-01'  between tableName.fromDatePropName and tableName.toDatePropName
...

回答ありがとうございます。

4

1 に答える 1

1

そうではありませんか:

Restrictions.between("date", model.getFromDate(), model.getToDate())

javadocからRestrictions.between()、プロパティ名は最初の引数であり、Criteria がルートされているエンティティに関連しています。

ルート化されたエンティティのプロパティが同じエンティティの他の 2 つのプロパティの間にあることを要求するなどの制限を本当に指定したい場合は、 の代わりに メソッドRestrictions.geProperty()とメソッドを使用できます。Restrictions.leProperty()Restrictions.between()

Restrictions.geProperty("date", "fromDate")

Restrictions.leProperty("date", "toDate")
于 2011-10-07T09:27:04.253 に答える