Java Hibernate搜索-选择查询SQLSyntaxErrorException

Java Hibernate搜索-选择查询SQLSyntaxErrorException,java,sql,oracle,hibernate,Java,Sql,Oracle,Hibernate,我试图在Hibernate搜索中运行下面的查询,我在日志中得到下面的异常。我不确定我错过了什么使它工作 String hsql=SELECT*从SELECT dest.ID中选择dest.postal\u代码作为邮政编码,ACOSSIN弧度src.latitude*SIN弧度dest.latitude+COS弧度src.latitude*COS弧度dest.latitude*COS弧度src.longitude-RADIANS dest.longitude*3959作为与邮政编码dest交叉连接

我试图在Hibernate搜索中运行下面的查询,我在日志中得到下面的异常。我不确定我错过了什么使它工作


String hsql=SELECT*从SELECT dest.ID中选择dest.postal\u代码作为邮政编码,ACOSSIN弧度src.latitude*SIN弧度dest.latitude+COS弧度src.latitude*COS弧度dest.latitude*COS弧度src.longitude-RADIANS dest.longitude*3959作为与邮政编码dest交叉连接邮政编码src的距离,其中src.ID=从邮政编码中选择ID,其中邮政编码=:zipCode按ID和dest.ID分组src.ID或dest.ID=src.ID具有距离您需要从hsql中删除分号。

SQL查询中有两个错误。首先,您必须在order by之前删除分号,HAVING子句必须始终位于group by子句之后。您的代码必须如下:


当我删除结尾的分号时,它是一个语法错误,insert;完成LocalVariableDeclarationStatementThx。我已经修复了它,但查询检索结果的速度非常慢。如果您能帮助微调查询,那就太好了
String hsql="SELECT * FROM (SELECT dest.ID,dest.postal_code AS ZIP, ACOS(SIN ( RADIANS( src.latitude) ) * SIN ( RADIANS ( dest.latitude )) + COS ( RADIANS ( src.latitude)) * COS ( RADIANS ( dest.latitude )) * COS ( RADIANS( src.longitude ) - RADIANS ( dest.longitude ))) * 3959 AS DISTANCE FROM post_codes dest CROSS JOIN post_codes src WHERE src.ID = ( SELECT ID FROM post_codes WHERE postal_code = :zipCode GROUP BY ID ) AND ( dest.ID <> src.ID OR  dest.ID = src.ID )) GROUP BY ID,ZIP,DISTANCE HAVING DISTANCE <= :miles ORDER BY DISTANCE";