1

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

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 的结果。

其他几个人通过谷歌报告了同样的事情,但没有特别的解决方案:(

4

3 回答 3

2

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

使用 HSQLDB 时,插入任何大于 16Mb 的 CLOB 值总是会失败并出现异常

拉取请求

于 2013-06-07T12:47:31.070 回答
2

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

于 2013-02-06T20:58:15.227 回答
0

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

alter table public.user alter column myClobColumn clob

于 2018-09-23T03:07:18.637 回答