2011-10-07 1 views
1

이것은 hibernate 사이의 Hibernate의 일반적인 사용이다.최대 절전 모드 제한 : 두 DB.table.property 이름 사이의 개체

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

그러나 최대 절전 모드에서 두 개 이상의 propertyName가있는 Object 사이의 제약 조건을 원한다.

예 : tableName.fromDatePropNametableName.toDatePropName tableName.toDatePropName tableName.toDatePropName

사이의 날짜 '2011-10-01'을 원합니다. 한 가지 방법으로이 작업을 수행하고 싶습니다.

예 :

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

질문은 무엇입니까? – MasterCassim

+0

이러한 속성은 어디서 발생합니까? 당신이 비교하고자하는 엔티티의 속성입니까? – Thomas

답변

1

는이 있어야하지 않나요 다음 Restrictions.between()의 javadoc에서

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

는 속성 이름은 첫 번째 인수, 그리고 기준에 뿌리 엔티티에 상대적입니다.

동일한 엔터티의 다른 두 속성 사이에 루트 엔터티의 속성을 요구하는 것과 같은 제한을 지정하려는 경우 Restrictions.between() 대신 Restrictions.geProperty()Restrictions.leProperty() 메서드를 사용할 수 있습니다.

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

Restrictions.leProperty("date", "toDate")