Hibernate 在HQL中使用earthdistance Postgresql扩展

Hibernate 在HQL中使用earthdistance Postgresql扩展,hibernate,postgresql,earthdistance,Hibernate,Postgresql,Earthdistance,我面临着PostgreSQL扩展的问题 根据指南,我添加了以下扩展: 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中

我面临着PostgreSQL扩展的问题

根据指南,我添加了以下扩展:

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]
...
org.hibernate.QueryException:意外字符:'@'[从表中选择1,其中地球框(ll_to_earth(40.463444,-3.637716),2000)@>ll_to_earth(table.lat,table.lon)]
! 在org.hibernate.hql.internal.ast.QueryTranslatorImpl.docomfile(QueryTranslatorImpl.java:250)~[logistics-statemachine-1.0.jar:na]
! 在org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:158)~[logistics-statemachine-1.0.jar:na]
! 在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:131)~[logistics-statemachine-1.0.jar:na]
! 在org.hibernate.engine.query.spi.HQLQueryPlan.(HQLQueryPlan.java:93)~[logistics-statemachine-1.0.jar:na]
! 在org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:167)~[logistics-statemachine-1.0.jar:na]
! 在org.hibernate.internal.AbstractSessionImpl.getHQLQueryPlan(AbstractSessionImpl.java:301)~[logistics-statemachine-1.0.jar:na]
! 在org.hibernate.internal.AbstractSessionImpl.createQuery(AbstractSessionImpl.java:236)~[logistics-statemachine-1.0.jar:na]
! 在org.hibernate.internal.SessionImpl.createQuery(SessionImpl.java:1836)~[logistics-statemachine-1.0.jar:na]
...
这说明HQL方言无法识别已安装的Postgres扩展


有人能将此运算符用于HQL吗?

当@被取下时,异常将消失。您是否已打开hibernate日志以查看已转换的sql