java - 如何在 xml 文件的命名查询中使用 Less Then 或等于 (<=)

标签 java sql oracle hibernate

我在 .hbm.xml 文件中使用了 &ls; 进行命名查询,但我得到的异常是 `

org.hibernate.exception.SQLGrammarException: ORA-00920: invalid relational operator

    at org.hibernate.exception.internal.SQLStateConversionDelegate.convert(SQLStateConversionDelegate.java:122)
    at org.hibernate.exception.internal.StandardSQLExceptionConverter.convert(StandardSQLExceptionConverter.java:49)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:125)
    at org.hibernate.engine.jdbc.spi.SqlExceptionHelper.convert(SqlExceptionHelper.java:110)
    at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:129)
    at org.hibernate.engine.jdbc.internal.proxy.AbstractProxyHandler.invoke(AbstractProxyHandler.java:81)
    at $Proxy14.executeQuery(Unknown Source)
    at org.hibernate.loader.Loader.getResultSet(Loader.java:1962)
    at org.hibernate.loader.Loader.doQuery(Loader.java:829)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:289)
    at org.hibernate.loader.Loader.doList(Loader.java:2447)
    at org.hibernate.loader.Loader.doList(Loader.java:2433)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2263)
    at org.hibernate.loader.Loader.list(Loader.java:2258)
    at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:331)
    at org.hibernate.internal.SessionImpl.listCustomQuery(SessionImpl.java:1697)
    at org.hibernate.internal.AbstractSessionImpl.list(AbstractSessionImpl.java:227)
    at org.hibernate.internal.SQLQueryImpl.list(SQLQueryImpl.java:156)
    at com.sme.medialib.report.ReportDAOImpl.getAllDigAudioClipsInfo(ReportDAOImpl.java:79)
    at com.sme.medialib.report.ReportManagerImpl.getdigAudioClipsInfo(ReportManagerImpl.java:32)
    at com.sme.medialib.report.ReportManagerImpl$$FastClassByCGLIB$$bb345ddc.invoke(<generated>)
    at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204)
    at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:698)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:150)
    at org.springframework.transaction.interceptor.TransactionInterceptor$1.proceedWithInvocation(TransactionInterceptor.java:96)
    at org.springframework.transaction.interceptor.TransactionAspectSupport.invokeWithinTransaction(TransactionAspectSupport.java:260)
    at org.springframework.transaction.interceptor.TransactionInterceptor.invoke(TransactionInterceptor.java:94)
    at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:172)
    at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:631)
    at com.sme.medialib.report.ReportManagerImpl$$EnhancerByCGLIB$$4ec4df3.getdigAudioClipsInfo(<generated>)
    at com.sme.medialib.report.ReportBatchProcess.exportToExcel(ReportBatchProcess.java:94)
    at com.sme.medialib.report.ReportBatchProcess.main(ReportBatchProcess.java:73)
Caused by: java.sql.SQLException: ORA-00920: invalid relational operator

    at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
    at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
    at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
    at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
    at oracle.jdbc.driver.T4CPreparedStatement.executeForDescribe(T4CPreparedStatement.java:799)
    at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1037)
    at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
    at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
    at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3316)
    at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3361)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
    at java.lang.reflect.Method.invoke(Unknown Source)
    at org.hibernate.engine.jdbc.internal.proxy.AbstractStatementProxyHandler.continueInvocation(AbstractStatementProxyHandler.java:122)
    ... 27 more`

请建议如何在命名查询中使用 <= 符号。

我写的示例查询

select s
  from sample 
 where date &le;  sysdate + 54
 order by id;

最佳答案

将您的查询包装在 CDATA 中就像指出 this示例。

所以写这样的东西:

<hibernate-mapping>
   ....
   <query name="yourQueryName">
           <![CDATA[select s from sample s where date <=  (sysdate + 54) order by id;]]>
   </query>
   ....
</hibernate-mapping>

应该可以解决问题!

关于java - 如何在 xml 文件的命名查询中使用 Less Then 或等于 (<=),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21018923/

相关文章:

sql - Oracle:以注释开头的查询对性能有影响吗?

sql - 如何在字符串中插入零?

java - Gradle 构建失败 : Dex files cannot exceed 64k

Java MIDI 音序器替代品

sql - 重新获得失去的身份值(value)

SQL 为嵌套选择创建别名列?

.net - SQL Server 中的 Service Broker 是什么?

oracle - 如何检查 Oracle 是否在 Docker 中启动?

java - 为什么当我滚动 RecyclerView 时我的 TextView 文本大小会改变? (使用自动调整 TextView)

java - 在 build.gradle 中 multidex=false 时离开 Multidex.install(this)