【问题标题】:JPA Hibernate HSQLDB - VARBINARY() field and error attempting to selectJPA Hibernate HSQLDB - VARBINARY() 字段和错误尝试选择
【发布时间】:2011-07-21 03:40:43
【问题描述】:

我在HSQLDB: Duplicate column name, unsupported internal operation: Type, invalid character for cast 找到了一个类似的问题,但没有可理解的答案。我还查看了http://old.nabble.com/unsupported-internal-operation%3A-StatementDMQL-td27427172.html,它报告问题是 HSQLDB 中的一个错误,但它应该在我使用的版本(2.2)中得到修复。所以,这里是问题的细节:

我有一个实体,它在 HSQLDB 的 VARBINARY(128) 字段中存储一些字节 [] 数据。表创建成功,但是当我尝试从表中选择时,我得到以下堆栈跟踪:

java.sql.SQLException: java.lang.RuntimeException: unsupported internal operation: Type java.lang.RuntimeException: unsupported internal operation: Type
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
    at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
    at org.hsqldb.jdbc.JDBCPreparedStatement.fetchResult(Unknown Source)
    at org.hsqldb.jdbc.JDBCPreparedStatement.executeQuery(Unknown Source)
    at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:76)
    at org.hibernate.jdbc.AbstractBatcher.getResultSet(AbstractBatcher.java:208)
    at org.hibernate.loader.Loader.getResultSet(Loader.java:1953)
    at org.hibernate.loader.Loader.doQuery(Loader.java:802)
    at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:274)
    at org.hibernate.loader.Loader.doList(Loader.java:2533)
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2276)
    at org.hibernate.loader.Loader.list(Loader.java:2271)
    at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:452)
    at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:363)
    at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196)
    at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1268)
    at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102)
    at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:274)
    at com.dns.recursive.ipcache.data.CacheWrapper.findEntry(CacheWrapper.java:206)
    at com.dns.recursive.ipcache.net.TCPWorker.run(TCPWorker.java:114)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
    at java.lang.Thread.run(Thread.java:636)
Caused by: org.hsqldb.HsqlException: java.lang.RuntimeException: unsupported internal operation: Type
    at org.hsqldb.error.Error.error(Unknown Source)
    at org.hsqldb.result.Result.newErrorResult(Unknown Source)
    at org.hsqldb.StatementDMQL.execute(Unknown Source)
    at org.hsqldb.Session.executeCompiledStatement(Unknown Source)
    at org.hsqldb.Session.execute(Unknown Source)
    ... 21 more
Caused by: java.lang.RuntimeException: unsupported internal operation: Type
    at org.hsqldb.error.Error.runtimeError(Unknown Source)
    at org.hsqldb.types.Type.subtract(Unknown Source)
    at org.hsqldb.ExpressionArithmetic.getValue(Unknown Source)
    at org.hsqldb.ExpressionOrderBy.getValue(Unknown Source)
    at org.hsqldb.QuerySpecification.buildResult(Unknown Source)
    at org.hsqldb.QuerySpecification.getSingleResult(Unknown Source)
    at org.hsqldb.QuerySpecification.getResult(Unknown Source)
    at org.hsqldb.StatementQuery.getResult(Unknown Source)
    ... 24 more

我真的可以使用一些帮助来找出原因。提前致谢!!

【问题讨论】:

    标签: java hibernate jpa hsqldb


    【解决方案1】:

    不支持的内部操作是一个通用错误,它报告发生错误的类。它是防止错误的低级防线。通常在发生此类错误之前,会捕获并报告 SQL 错误。在这种情况下,它不会被捕获。其他具有相同错误字符串的异常报告可能完全不相关。

    您需要报告 CREATE TABLE 语句和针对它运行的 SELECT 语句。

    堆栈跟踪表明存在一个 ORDER BY 子句,其中包含 ORDER BY A - B 之类的内容,其中 A 或 B 不是数字。

    【讨论】:

    • 感谢您的回答!这听起来完全合理,但我已经对我的代码进行了分支并以不同的方式解决了这个问题。
    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 2011-10-10
    • 2013-07-24
    • 2011-02-14
    • 2011-04-02
    • 2020-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多