1

这是正常使用 Hibernate 的 between 约束

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

但我希望在休眠状态Object下有两个或更多之间的约束。propertyName

例如:我想要'2011-10-01'介于tableName.fromDatePropName和之间的日期tableName.toDatePropName

这就是我想用一种方法做的事情:

前任:

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())

Restrictions.between()javadoc 中,属性名称是第一个参数,并且与 Criteria 所基于的实体相关。

如果您确实想指定一个限制,例如要求根实体的属性位于同一实体的两个其他属性之间,您可以使用Restrictions.geProperty()andRestrictions.leProperty()方法而不是Restrictions.between().

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

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