JPA Hibernate HSQLDB - поле VARBINARY () и ошибка при попытке выбора - PullRequest
2 голосов
/ 21 июля 2011

Я нашел похожий вопрос в HSQLDB: Дублирующееся имя столбца, неподдерживаемая внутренняя операция: Тип, недопустимый символ для приведения , но нет понятного ответа.Я также посмотрел на http://old.nabble.com/unsupported-internal-operation%3A-StatementDMQL-td27427172.html, который сообщает, что проблема связана с ошибкой в ​​HSQLDB, но она должна быть исправлена ​​в версии, которую я использую (2.2).Итак, вот детали проблемы:

У меня есть объект, который хранит некоторые данные byte [] в поле VARBINARY (128) внутри HSQLDB.Таблица создана успешно, но когда я пытаюсь выбрать из таблицы, я получаю следующую трассировку стека:

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

Я действительно могу использовать некоторую помощь, чтобы выяснить причину этого.Заранее спасибо !!

1 Ответ

1 голос
/ 21 июля 2011

Неподдерживаемая внутренняя операция - это общая ошибка, которая сообщает класс, в котором произошла ошибка.Это линия защиты низкого уровня от ошибок.Обычно ошибка SQL обнаруживается и сообщается до того, как произойдет ошибка такого типа.В этом случае это не пойман.Другие отчеты об исключениях с той же строкой ошибки могут быть полностью не связаны.

Вам необходимо сообщить оператор CREATE TABLE и оператор SELECT, который работает с ним.

Трассировка стека указывает на наличие ORDERПредложение BY, которое включает в себя что-то вроде ORDER BY A - B, где A или B не являются числами.

...