这是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
...
感谢您的回答。
答案 0 :(得分:1)
不应该是:
Restrictions.between("date", model.getFromDate(), model.getToDate())
从Restrictions.between()
javadoc,属性名称是第一个参数,并且相对于Criteria根植的实体。
如果您确实要指定限制,例如要求根实体的属性位于同一实体的两个其他属性之间,则可以使用Restrictions.geProperty()
和Restrictions.leProperty()
方法而不是{{ 1}}。
Restrictions.between()
和
Restrictions.geProperty("date", "fromDate")