【问题标题】:query runs fine in sql developer, but crashes in hibernate查询在 sql developer 中运行良好,但在 hibernate 中崩溃
【发布时间】:2011-03-04 15:51:49
【问题描述】:

当我在 sqldeveloper 中运行它时:

SELECT   CASE
WHEN TABLE1.COL1 IS NOT NULL
THEN (
CASE
WHEN TABLE1.COL2 IS NOT NULL
THEN TABLE1.COL3
ELSE TABLE1.COL4
END) 
WHEN TABLE1.COL5 IS NOT NULL
THEN TABLE1.COL6
ELSE TABLE1.COL7 END "C" FROM TABLE1

它运行良好。 当我通过 Hibernate 会话运行它时,它给出:

No Dialect mapping for JDBC type: -101

所有列都是 varchar2 类型。 col1 是数字类型。 数据库是oracle 10g。 如果解决方案不明显,也欢迎使用解决方法:) 另外,我怎样才能找出 JDBC 类型 -101 指的是什么。我以前见过-1,但没见过-101。

编辑:我尝试在命名查询之上使用返回标量没有运气。
编辑#2:有没有办法查看为“C”返回的数据类型是什么。然后我使用答案中提供的解决方案之一。

【问题讨论】:

    标签: sql hibernate oracle10g


    【解决方案1】:

    当我们通过查询传递参数而不是直接输入值时,就会出现此错误。在 SQL 的情况下,您可以通过将值指定为 C= :S 并在生成的新文本框中输入值来重新生成相同的值。此问题的解决方案来自升级补丁,因为这是一个错误。

    【讨论】:

      【解决方案2】:

      我在 Oracle 上从来没有遇到过,但有时 JDBC 会为查询中的复杂表达式返回奇怪的类型,而 Hibernate 无法解析这些类型。

      在这种情况下,您可以尝试向查询添加显式强制转换:

      SELECT CAST((CASE ... END) AS varchar2) "C" FROM TABLE1
      

      【讨论】:

      • 谢谢。执行此操作后,它显示:java.sql.SQLException: ORA-00600: internal error code, arguments: [qctcte1], [0], [], [], [], [], [], [], [ ]、[]、[]、[]。虽然在 sql developer 中工作正常。顺便说一句,什么是 qctcte1?
      • @Kaushik:我对Oracle没有太多经验,所以我不知道如何处理它。
      【解决方案3】:

      如果 axtavt 的答案不起作用,您可以按照以下模式定义自己的类型映射:

      public class MySQL5Dialect extends org.hibernate.dialect.MySQL5Dialect
      {
          public MySQL5Dialect()
          { 
              super(); // register additional hibernate types for default use in scalar sqlquery type auto detection 
              registerHibernateType(Types.LONGVARCHAR, Hibernate.TEXT.getName()); 
          }
      
      }
      

      当然,你必须使用你得到的值来代替 ov longvarchar 和适当的 Hiberante 类型。

      (我在这里截取了代码示例:http://opensource.atlassian.com/projects/hibernate/browse/HHH-1483

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-11
        • 2019-03-16
        • 2016-05-26
        • 2012-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多