Spring: Data truncation: Data too long for column 'page_content' at row 1, почему?

Обрабатываю текстовой файл — "книгу". Каждая строка этого файла в последствии будет страницей книги (BookPage).
Что делаю я: создаю из файла стрим и, отфильтровав пустые строки, преобразую стрим в List:
...
    stringList = fileLinesStream.filter(l -> !l.isEmpty()).collect(Collectors.toList());
...

После чего пробегаюсь по элементам списка и на каждом повторе создаю объект new BookPage, полю pageContent которого присваиваю содержимое элемента List:
for (int i = 0; i < stringList.size(); i++) {
    BookPage bookPage = new BookPage(book, stringList.get(i));
    bookPageService.CreatePage(bookPage); // в этом методе сервиса вызывается bookPageRepository.save(bookPage);
    }

Объект создаётся, но на следующем шаге (bookPageService.CreatePage(bookPage)) Спринг падает с ошибкой:
Data truncation: Data too long for column 'page_content' at row 1

В тестовом файле всего четыре строки, самая длинная из которых - 430 символов.

BookPage

@Entity
@Table(name = "pages")
public class BookPage {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private long id;

    @ManyToOne(fetch = FetchType.EAGER)
    @JoinColumn(name = "book_id")
    private Book book;

    @Column(columnDefinition = "LONGBLOB")
    private String pageContent;

    public BookPage(Book book, String pageContent) {
        this.book = book;
        this.pageContent = pageContent;
    }

    public BookPage() {
    }
}

В аннотации к pageContent пробовал разные значения columnDefinition: и LONGBLOB, и TEXT, но ничего не меняется.

В чём может быть причина? В типе данных? В ещё каких-то ограничениях?
  • Вопрос задан
  • 27 просмотров
Решения вопроса 1
steff
@steff Автор вопроса
Похоже, проблема была в том, что мои изменения в коде не отражались в базе данных.
Решилось всё просто: удалил таблицу, а при следующем запуске приложения она пересоздалась.
Всё работает с:
@Column(columnDefinition = "TEXT",
            name = "page_content")
    private String pageContent;
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы