运行命名查询时出现此异常
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();
尝试删除“AS”关键字来定义表别名
这是如何编写联接的示例:
SELECT gn.*
FROM GENERAL_NOTIFICATIONS gn
JOIN NOTIFICATION_ROLE nr ON (cign.ID = cinr.NOTIFICATION_ID)