Hibernate奇怪地收获clob值

我在两个表之间有一对多的关系。 许多表包含clob列。 clob列在hibernate中看起来像这样:

@CollectionOfElements(fetch = EAGER) @JoinTable(name = NOTE_JOIN_TABLE, joinColumns = @JoinColumn(name = "note")) @Column(name = "substitution") @IndexColumn(name = "listIndex", base = 0) @Lob private List substitutions; 

所以基本上我可能会注意到一些替换,比如"foo""fizzbuzz" 。 所以在我的主表中我可以有一个带有id 4的Note,在我的NOTE_JOIN_TABLE我会有两行, "foo""fizzbuzz" ,它们都与Note有关系。

但是,当其中一个插入DB时,较大的替换值被裁剪为与最短的一样长。 所以在这种情况下,我会在DB中使用"foo""fizzbuzz"而不是"foo""fizzbuzz"

你知道为什么会这样吗? 我已经检查并确认它们没有被我们的代码中的任何地方裁剪,它是彻底的hibernate。

许多JDBC驱动程序,特别是Oracle的早期版本,在插入LOB时会出现问题。 您是否确保查询Hibernate已激活,并且相同的参数绑定在JDBC驱动程序中成功运行?

LOB/CLOB列可能不够大。 Hibernate有一些LOB/CLOB默认列大小相对较小(可能取决于db)。 无论如何,尝试这样的事情:

 @Lob @Column(length=2147483648) 

根据您的需要调整长度(以字节为单位)。