冬眠作物的异味值

时间:2020-03-05 18:50:29  来源:igfitidea点击:

我在两个表之间有一对多的关系。 many表包含一个clob列。 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;

因此,基本上,我可能会有一个带有一些替代词的Note,例如" foo"和" fizzbuzz"。因此,在主表中,我可以有一个ID为4的注释,在我的" NOTE_JOIN_TABLE"中,我将有两行" foo"和" fizzbuzz"都与该注释有关系。

但是,将其中之一插入DB时,较大的替换值将被裁剪为与最短的值一样长。因此,在这种情况下,我将在数据库中使用" foo"和" fiz"来代替" foo"和" fizzbuzz"。

我们知道为什么会这样吗?我已经检查并确认它们没有在我们的代码中的任何地方被裁剪,它绝对处于休眠状态。

解决方案

回答

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

@Lob 
@Column(length=2147483648)

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

回答

许多JDBC驱动程序(尤其是Oracle的早期版本)在插入LOB时遇到问题。我们是否确保在绑定了相同参数的情况下触发Hibernate查询,使其在JDBC驱动程序中成功运行?