Гибернация сельскохозяйственных культур приводит к странным значениям сгустков

StackOverflow https://stackoverflow.com/questions/53316

  •  09-06-2019
  •  | 
  •  

Вопрос

У меня есть отношение "один ко многим" между двумя таблицами.Таблица 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".Итак, в моей основной таблице у меня могла бы быть заметка с идентификатором 4, а в моей NOTE_JOIN_TABLE У меня было бы два ряда, "foo" и "fizzbuzz" что и то, и другое имеет отношение к Записке.

Однако, когда один из них вставляется в базу данных большие значения подстановки обрезаются так, чтобы они были такой же длины, как и самые короткие. Так что в этом случае я бы имел "foo" и "fiz" в базе данных вместо "foo" и "fizzbuzz".

У вас есть какие-нибудь идеи, почему это происходит?Я проверил и подтвердил, что они нигде не обрезаются в нашем коде, он определенно находится в спящем режиме.

Это было полезно?

Решение

Многие драйверы JDBC, в частности, ранние версии Oracle, испытывают проблемы при установке LOBs.Вы убедились, что запуск запроса Hibernate с привязкой к тем же параметрам успешно работает в вашем драйвере JDBC?

Другие советы

LOB/CLOB столбец может быть недостаточно большим.Hibernate имеет некоторые размеры столбцов по умолчанию для LOB/CLOB которые относительно невелики (могут зависеть от базы данных).В любом случае, попробуйте что-то вроде этого:

@Lob 
@Column(length=2147483648)

Отрегулируйте длину (в байтах) в зависимости от ваших потребностей.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top