1

2 つのテーブル間に 1 対多の関係があります。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;

したがって、基本的に、いくつかの置換を含むメモがある場合が"foo"あり"fizzbuzz"ます。したがって、私のメイン テーブルには ID 4 のメモがあり、私のテーブルにNOTE_JOIN_TABLEは 2 つの行が"foo"あり"fizzbuzz"、両方ともメモと関係があります。

ただし、これらのいずれかが DB に挿入されると、より大きな置換値が最短になるようにトリミングされます。したがって、この場合、 DB には and の代わりに"foo"andがあります。"fiz""foo""fizzbuzz"

なぜこれが起こっているのか分かりますか?コードのどこにもトリミングされていないことを確認しました。間違いなく休止状態です。

4

2 に答える 2

0

多くの JDBC ドライバー、特に Oracle の初期バージョンでは、LOB の挿入中に問題が発生します。同じパラメーターがバインドされたクエリ Hibernate が JDBC ドライバーで正常に動作することを確認しましたか?

于 2008-09-10T17:36:46.130 に答える
0

LOB/CLOB列が十分に大きくない可能性があります。Hibernate には、LOB/CLOB比較的小さいデフォルトの列サイズがいくつかあります (db に依存する場合があります)。とにかく、次のようなことを試してください:

@Lob 
@Column(length=2147483648)

必要に応じて長さ (バイト単位) を調整します。

于 2008-09-10T03:39:41.057 に答える