HSQL& Hibernate:不支持的内部操作:Session

时间:2013-01-29 12:41:36

标签: java hibernate jpa hsqldb

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

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

其他几位报道了大致相同的事情是通过Google发现但没有特别的解决方案:(

3 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

Pull request

答案 2 :(得分:0)

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

alter table public.user alter column myClobColumn clob