저는 HQL에 익숙한 사람 (저도 초보자입니다)이이 질문에 쉽게 답할 수 있다고 확신합니다.Joda Time을 사용하여 HQL (Hibernate)에서 날짜를 쿼리하는 방법은 무엇입니까?
내 Grails 애플리케이션에 다음 도메인 클래스가 있습니다. 내 HQL 질의에서
class Book {
org.joda.time.DateTime releaseDate //I use the PersistentDateTime for persisting via Hibernate (that use a DATETIME type for MySQL DB)
}
, 나는 date2
.. 그 릴리스 날짜 범위 date1
에 포함되어있는 책을 검색 할 예를 들어 나는 시도 :
DateTime date1, date2
...
def queryStr = "select * from Book as b where b.releaseDate > $date1 and b.releaseDate < $date2"
def res = Book.executeQuery(queryStr)
하지만 예외를 가지고 ...caused by: org.springframework.orm.hibernate3.HibernateQueryException: unexpected token:
오류 토큰은 날짜 형식을 나타냅니다 (예 : 2009-11-27T21:57:18.010+01:00
또는 Fri Nov 27 22:01:20 CET 2009
)
date1을 Date 클래스로 변환하지 못했습니다.
올바른 HQL 코드는 무엇입니까? patternForStyle 메서드를 사용하여 특정 형식 (어떤 형식으로 변환해야합니까?)을 수행해야합니까? 아니면 다른 방법으로이를 수행 할 수 있습니까?
감사합니다.
Fabien.
org.joda.time.DateTime이 SQL에 어떻게 매핑됩니까? 직접 현장에 있습니까? java.util.Date와 java.util.Calendar는 데이터베이스 필드에 직접 매핑 할 수 있습니다. 가치있는 일로, DateTime은 집합 객체이기 때문에, Grails 플러그인은 아마도 커버 아래에 커스텀 매핑 타입을 사용할 것입니다 (Java Persistence with Hibernate의 sec 5.3 참조). – Alan
코드 주석에서 언급했듯이 DateTime은 joda-time-hibernate 라이브러리의 PersistentDateTime 사용자 정의 매핑 유형을 사용 중입니다. – fabien7474