【问题标题】:HSQL & Hibernate: unsupported internal operation: SessionHSQL & Hibernate:不支持的内部操作:Session
【发布时间】:2013-01-13 00:54:18
【问题描述】:

我有一个具有以下依赖项的项目:

hibernate-entitymanager-4.1.8
hsql-2.2.8

我有一个持久化单元,包括:

<properties>
    <property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbcDriver"/>
    <property name="hibernate.cache.provider_class" value="org.hibernate.cache.NoCacheProvider"/>
    <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
    <property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect"/>
</properties>

还有一个具有字段的实体:

@Lob
@Column(name = "DOCUMENT")
private String document;

当我通过 EntityManager 坚持我的实体时,我看到堆栈跟踪的以下结尾:

Caused by: java.lang.RuntimeException: unsupported internal operation: Session
at org.hsqldb.error.Error.runtimeError(Unknown Source)
at org.hsqldb.Session.performLOBOperation(Unknown Source)
at org.hsqldb.Session.execute(Unknown Source)
at org.hsqldb.types.ClobDataID.nonSpaceLength(Unknown Source)
at org.hsqldb.types.CharacterType.castOrConvertToType(Unknown Source)
at org.hsqldb.types.CharacterType.convertToType(Unknown Source)
at org.hsqldb.StatementDML.getInsertData(Unknown Source)
at org.hsqldb.StatementInsert.getResult(Unknown Source)

我在这里做一些明显错误的事情吗?尽管进行了很多更改并且在不同的机器上,这仍然有效。可能是依赖升级或从直接的 Spring/Hibernate 抽象层切换到 JPA/Hiberate 的结果。

通过谷歌发现的其他几个报告大致相同的事情,但没有特定的解决方案:(

【问题讨论】:

    标签: java hibernate jpa hsqldb


    【解决方案1】:

    我什至尝试使用更新版本的 HSQLDB 2.4.1 和 Hibernate-core 5.3.6,问题仍然存在。 因为 Hibernate 生成的模式只有 255 char 列长度,所以在我的例子中,尝试改变列类型工作(clob 而不是 clob(255))

    alter table public.user alter column myClobColumn clob

    【讨论】:

      【解决方案2】:

      此问题已在最新版本的 HSQLDB 中得到修复。 2.3.0 版可从 hsqldb.org 获得。

      【讨论】:

        【解决方案3】:

        Hibernate 4.1.8 中的修复导致了回归。对于 HSQLDB,Schema 导出将创建一个限制为 255 个字符的博客/clob。

        When using HSQLDB, inserting any CLOB value larger than 16Mb always fails with an exception

        Pull request

        【讨论】:

          猜你喜欢
          • 2014-02-18
          • 2017-11-09
          • 1970-01-01
          • 1970-01-01
          • 2015-11-27
          • 1970-01-01
          • 1970-01-01
          • 2022-08-15
          • 2023-03-24
          相关资源
          最近更新 更多