2016-02-03 25 views
1

我正面臨着PostgreSQL的earthdistance擴展的問題。在HQL中使用earthdistance Postgresql擴展

this指導,我已經添加了以下擴展名:

CREATE EXTENSION cube; 
CREATE EXTENSION earthdistance; 

我試圖逃避的Postgres命令行下面的SQL查詢和一切工作正常:

SELECT * FROM table 
WHERE earth_box(ll_to_earth(40.463444, -3.637716), 2000) @> ll_to_earth(table.lat, table.lon) 

當我嘗試在HQL中運行相同的查詢,我得到以下例外:

org.hibernate.QueryException: unexpected char: '@' [Select 1 from table WHERE earth_box(ll_to_earth(40.463444, -3.637716), 2000) @> ll_to_earth(table.lat, table.lon)] 
! at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:250) ~[logistics-statemachine-1.0.jar:na] 
! at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158) ~[logistics-statemachine-1.0.jar:na] 
! at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:131) ~[logistics-statemachine-1.0.jar:na] 
! at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:93) ~[logistics-statemachine-1.0.jar:na] 
! at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167) ~[logistics-statemachine-1.0.jar:na] 
! at org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301) ~[logistics-statemachine-1.0.jar:na] 
! at org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236) ~[logistics-statemachine-1.0.jar:na] 
! at org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1836) ~[logistics-statemachine-1.0.jar:na] 
... 

它告訴我HQL方言不能識別安裝的Postgres擴展。

是否有人可以在HQL中使用該操作符?

回答

0

當@被取消時,異常將消失。你打開休眠日誌來查看轉換後的SQL。