Обрабатываю текстовой файл — "книгу". Каждая строка этого файла в последствии будет страницей книги (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, но ничего не меняется.
В чём может быть причина? В типе данных? В ещё каких-то ограничениях?