Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 冬眠作物的clob值异常_Java_Oracle_Hibernate - Fatal编程技术网

Java 冬眠作物的clob值异常

Java 冬眠作物的clob值异常,java,oracle,hibernate,Java,Oracle,Hibernate,我在两个表之间有一对多关系。many表包含一个clob列。clob列在hibernate中如下所示: @CollectionOfElements(fetch = EAGER) @JoinTable(name = NOTE_JOIN_TABLE, joinColumns = @JoinColumn(name = "note")) @Column(name = "substitution") @IndexColumn(name = "listIndex", base = 0) @Lob privat

我在两个表之间有一对多关系。many表包含一个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<String> substitutions;
@collectionfeements(fetch=EAGER)
@JoinTable(name=NOTE\u JOIN\u TABLE,joinColumns=@JoinColumn(name=“NOTE”))
@列(name=“substitution”)
@IndexColumn(name=“listIndex”,base=0)
@高球
私人名单替代;
因此,基本上我可能会有一张带有一些替代品的便条,比如
“foo”
“fizzbuzz”
。因此,在我的主表中,我可以有一个id为4的便笺,在我的
Note\u JOIN\u表中,我可以有两行,
“foo”
“fizzbuzz”
,它们都与便笺相关

但是,当将其中一个插入DB时,较大的替换值将被裁剪为最短的值。因此,在这种情况下,我将在DB中使用
“foo”
“fiz”
而不是
“foo”
“fizzbuzz”


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

LOB/CLOB
列可能不够大。Hibernate对
LOB/CLOB
有一些相对较小的默认列大小(可能取决于数据库)。无论如何,请尝试以下方法:

@Lob 
@Column(length=2147483648)

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

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

我认为这不可能,因为它是基于列表中最大字符串的动态裁剪,而不是静态截止点。啊,我明白了。非常奇怪的问题。“note”的join列是实际的note id还是实际的note?note列是note表中的note的id是的。这是我们的JDBC驱动程序的问题。解决方案(直到我们能够更新驱动程序)是禁用批处理。