1

我在两个表之间有一对多的关系。many 表包含一个 clob 列。在 hibernate 中,clob 列如下所示:

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

所以基本上我可能有一个带有一些替代品的注释,比如"foo"and "fizzbuzz"。因此,在我的主表中,我可以有一个 id 为 4 的便笺,而在我的主表中,我NOTE_JOIN_TABLE会有两行,"foo"并且"fizzbuzz"都与便笺有关系。

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

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

4

2 回答 2

0

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

@Lob 
@Column(length=2147483648)

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

于 2008-09-10T03:39:41.057 回答
0

许多 JDBC 驱动程序,尤其是早期版本的 Oracle,在插入 LOB 时都会出现问题。您是否确保查询 Hibernate 触发,绑定相同的参数在您的 JDBC 驱动程序中成功运行?

于 2008-09-10T17:36:46.130 回答