String 带有HSQLDB的DBUnit:字符串列太短

String 带有HSQLDB的DBUnit:字符串列太短,string,hibernate,jpa,hsqldb,dbunit,String,Hibernate,Jpa,Hsqldb,Dbunit,我有一个具有以下属性的实体 @Lob @NotNull private String myContent; 现在,在我的生产设置中,我使用CLOB在数据库中表示,因为内容可以是数千个字符。但是,对于单元测试,使用内存中的HSQLDB。在单元测试期间,我得到了这个错误 原因:org.hsqldb.hsqldb异常:数据异常:字符串数据,右截断 位于org.hsqldb.error.error.error(未知来源) 据我的研究显示,原因应该是DBUnit自动为字符串创建了一个255字符的列。在我

我有一个具有以下属性的实体

@Lob
@NotNull
private String myContent;
现在,在我的生产设置中,我使用
CLOB
在数据库中表示,因为内容可以是数千个字符。但是,对于单元测试,使用内存中的HSQLDB。在单元测试期间,我得到了这个错误

原因:org.hsqldb.hsqldb异常:数据异常:字符串数据,右截断
位于org.hsqldb.error.error.error(未知来源)


据我的研究显示,原因应该是DBUnit自动为字符串创建了一个255字符的列。在我的例子中,它对于我插入的内容来说不够长。那么,我能做些什么呢?

试试这样的方法:

@Column(columnDefinition = "VARCHAR", length = 65535)
@Lob
@NotNull
private String myContent;

这将导致创建一个更大的列。

Hmm,好的,但这意味着我修改实体只是为了测试。这不是一个干净的代码…它比不工作的测试更干净,依我看。另外,如果你不喜欢这样,请使用liquibase和flyway之类的工具,不要使用JPA来管理你的模式。这就是“干净”的方法。好的,我使用了
@Column(columnDefinition=“CLOB”)
,结果成功了。注意,dBUnit不会生成DDL,JPA实现会生成。