我有一个包含以下依赖项的项目:
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发现但没有特别的解决方案:(
答案 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
答案 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