在AT TIME ZONE上出现HQL休眠错误

时间:2014-08-15 00:01:24

标签: java sql hibernate hql

我有一个查询

Query query = this.sessionFactory.getCurrentSession()
                .createQuery(
                        "SELECT DISTINCT t " +
                        "FROM Tag AS t " +
                            "JOIN t.site s " +
                            "JOIN s.timezone tz " +     
                        "WHERE t.statusTypeId = 2 AND " +
                            "( t.startDate <= TRUNC(TO_TIMESTAMP_TZ(TO_CHAR(:startDate, 'YYYYMMDDHH24'), 'YYYYMMDDHH24') AT TIME ZONE tz.name) OR t.startDate IS NULL) AND " +
                            "( t.endDate >= TRUNC(TO_TIMESTAMP_TZ(TO_CHAR(:endDate, 'YYYYMMDDHH24'), 'YYYYMMDDHH24') AT TIME ZONE tz.name) OR t.endDate IS NULL )");

Hibernate抛出一个ERROR错误:org.hibernate.hql.internal.ast.ErrorCounter - 第1行:212:意外的令牌:AT

如何在createQuery中使用AT TINE ZONE?

1 个答案:

答案 0 :(得分:1)

如果您使用的是sql查询,则需要使用createSQLQuery(String sqlquery)

请参阅docs。 createQuery(string queryString)接受HQL查询但不接受SQL查询。您的查询是SQL