Hibernate异常SQL命令未正确结束

问题描述 投票:0回答:1

运行命名查询时出现此异常

Caused by: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
.....
Caused by: java.sql.SQLSyntaxErrorException: ORA-00933: SQL command not properly ended
.....
Caused by: Error : 933, Position : 40, Sql = select s1 from SystemParameterValueImpl as s1 join s1.systemParameter as p1 
                where p1.id = :1  and s1.effectiveGasDay = 
                    (select max(s2.effectiveGasDay ) 
                    from SystemParameterValueImpl s2 join s2.systemParameter as p2 
                    where p1.id = p2.id and s2.effectiveGasDay <= :2 ) 
                order by p1.id, 
OriginalSql = select s1 from SystemParameterValueImpl as s1 join s1.systemParameter as p1 
                where p1.id = ? and s1.effectiveGasDay = 
                    (select max(s2.effectiveGasDay ) 
                    from SystemParameterValueImpl s2 join s2.systemParameter as p2 
                    where p1.id = p2.id and s2.effectiveGasDay <= ?) 
                order by p1.id, Error Msg = ORA-00933: SQL command not properly ended

这是我的 hbm 文件中的命名查询

    <sql-query  name="findSystemParameterValueApplicableOnDate">
        <return class="com.amor.hcplus.application.systemparameter.domain.SystemParameterValueImpl" />
            <![CDATA[
                select s1 from SystemParameterValueImpl as s1 join s1.systemParameter as p1 where p1.id = :parameterName and s1.effectiveGasDay = (select max(s2.effectiveGasDay ) from SystemParameterValueImpl s2 join s2.systemParameter as p2 where p1.id = p2.id and s2.effectiveGasDay <= :date) order by p1.id
            ]]>
    </sql-query>

这是我调用namedQuery的地方

        SQLQuery query = (SQLQuery) getSession().getNamedQuery("findSystemParameterValueApplicableOnDate")
                .setParameter("parameterName", parameterName)
                .setParameter("date", date);
        
        List list = query.list();
java spring hibernate spring-data hibernate-mapping
1个回答
0
投票

尝试删除“AS”关键字来定义表别名

这是如何编写联接的示例:

SELECT gn.*
FROM GENERAL_NOTIFICATIONS gn
JOIN NOTIFICATION_ROLE nr ON (cign.ID = cinr.NOTIFICATION_ID)
© www.soinside.com 2019 - 2024. All rights reserved.