Hibernate限制:两个DB.table.property名称之间的对象

时间:2011-10-07 09:09:32

标签: java sql hibernate restriction

这是Hibernate在约束

之间的正常使用
Criterion critDate = Restrictions.between("fromDatePropName", model.getFromDate(), model.getToDate()) ;

但是我希望hibernate中Object与两个或更多propertyName之间的约束。

例如:我希望'2011-10-01'tableName.fromDatePropName之间的日期tableName.toDatePropName

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

例如:

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

Visual Ex:

以下是使用以下内容生成的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
...

感谢您的回答。

1 个答案:

答案 0 :(得分:1)

不应该是:

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

Restrictions.between() javadoc,属性名称是第一个参数,并且相对于Criteria根植的实体。

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

Restrictions.between()

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