Я не эксперт в этом, но я думаю, что у меня была та же проблема, но в противоположном направлении.
Похоже, что вы пытаетесь сохранить запись, и Hibernate выдает это исключение усечения данных, то есть сохраняет что-то, но не все, что вы хотели. Таким образом, вы ловите это исключение и пытаетесь откатить транзакцию. Но это не всегда гарантирует успех (из того, что я вижу в Hibernate save () и откат транзакции ), поэтому сохраненные данные все еще могут быть там. Давайте предположим, что это так. Затем вы изменяете свою запись и пытаетесь сохранить ее снова.
Но так как данные все еще там, вызов save ничего не сделает, так как в этом случае это должно быть обновление. Поэтому, когда вы пытаетесь зафиксировать эту транзакцию, Hibernate знает, что вы хотите сохранить 1 запись, но он успешно сохраняет 0, что приводит к ошибке.
Попробуйте изменить getSession (). Save (obj); на getSession (). SaveOrUpdate (obj); . Это должно сохранить запись, когда она не существует, и обновить ее (чтобы не было слишком большого поля), когда она существует.