У меня есть какая-то проблема и что особенного - проект работал правильно около 14 дней, и сегодня, 30 минут назад, мне повезло запустить его один раз ... и после этого снова возникла проблема.
Для началаЯ хочу добавить, это доказательство того, что все работало полчаса назад:

Видно - время выполнения всего процесса: 107411мс (107сек)
Итак.Я разработал весенний проект, который работает с базой данных, используя реализацию интерфейса JpaRepository.
Возникла проблема при попытке отправить метод записи в контроллер из консоли:
curl -d '{"explorerId":'24', "turnOff":true}' -H "Content-Type: application/json" -X POST http://localhost:8080/vdtw
Вариант 1
- «вариант 1» (с аннотациями @ManyToOne (cascade = CascadType.ALL, fetch = FetchType.EAGER) в сущности (показан в Структура раздел))
программа запускается и через несколько секунд возвращает ошибку в консоли:
{"отметка времени": "2018-09-18T10: 01: 08.343+0000 "," status ": 500," error ":" Internal Server Error "," message ":" Сообщение недоступно "," path ":" / vdtw "}
В IDEAошибка выброса консоли: ** StackOverflowException: null * с предварительным просмотром:
* java.lang.instrument СБОЙ СБОРА *: "! errorOutstanding" с ошибкой вызова метода преобразования сообщения в JPLISAgent.c строка: 844
2018-09-18 13: 01: 08.306 ОШИБКА 25853 --- [nio-8080-exec-1] oaccC [. [. [/]. [dispatcherServle]t]: Servlet.service () для сервлета [dispatcherServlet] в контексте с путем [] сгенерировал исключение [Ошибка отправки обработчика;вложенное исключение - java.lang.StackOverflowError] с основной причиной
prinscrn:

Вариант 2 (с fetch = FetchType.LAZY, без установки CascadType)
В этом случае программа работает нормально, но так долго (10+ минут):
Создать описание вакансии к слову, разобрать 14885 слов.Время: 621304
Вопросы:
Структура:
Объект, хранящийся в базе данных:
@Entity(name = "vacancy_desc_to_words")
public class VacancyDescriptionToWords {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@JoinColumn(name = "vacancy_description_id")
@ManyToOne(cascade = CascadeType.ALL)
private VacancyDescription vacancyDescription;
@JoinColumn(name = "words_id")
@ManyToOne(cascade = CascadType.ALL);
//------------------Second variant---------------------------
//@ManyToOne
private Words words;
}
Связано с объектом ManyToOne:
@Entity(name = "words")
public class Words {
@Id
@Column(name = "id")
@GeneratedValue(strategy = GenerationType.IDENTITY)
private long id;
@Column(name = "word", unique = true)
private String word;
@JsonIgnore
@OneToMany(mappedBy = "words", fetch = FetchType.EAGER, CascadType.ALL)
//---------------------Second variant----------------------
//@OneToMany(mappedBy = "words", fetch = FetchType.LAZY)
private Set<VacancyDescriptionToWords> vacancyDescriptionToWordsSet;
//getters/setters
}
Pom.xml:
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Место в коде, где возникает проблема
List<VacancyDescriptionToWords> vdtwList = VDTWService.parseAndGenerateNewDescToWords(vacancyDescriptions);
//--------------- exception string ----------------------
VDTWService.saveAll(vdtwList);
Сохранение списка сущностей способом:
public void saveAll(List<VacancyDescriptionToWords> vdtwList) {
vdtwRepository.saveAll(vdtwList);
}
Хранилище:
public interface VDTWRepository extends JpaRepository<VacancyDescriptionToWords, Long> {
}