Запрос Hibernate, выполненный в @RestController вне контекста @Transactional - PullRequest
0 голосов
/ 03 октября 2018

Я пишу приложение в весенней загрузке 2.0, и у меня есть ответ Entity JPA, сопоставленный с зависимостью вложенного объекта.

Я загружаю и сущность, которая возвращается в @RestController и включается вслужба ответов.

Я заметил, что запрос, выполняемый hibernate, когда объект находится в контроллере (вне границ транзакций) для получения вложенных объектов (ссылка на определенный объект Lazy)

Как это можно сделатьвозможно?

1 Ответ

0 голосов
/ 03 октября 2018

при весенней загрузке Open Session in View включен по умолчанию.

Вы должны отключить его в application.properties

spring.jpa.open-in-view=false

Поскольку Джексон тоже может попробоватьчтобы сериализовать объекты, на которые ссылаются Lazy, вам нужно добавить тип данных Джексона для hibernate5 (потому что вы используете весеннюю загрузку 2)

@Bean
public Module hibernate5Module() {
    return new Hibernate5Module();
}

и в вашем pom.xml

<dependency>
        <groupId>com.fasterxml.jackson.datatype</groupId>
        <artifactId>jackson-datatype-hibernate5</artifactId>
</dependency>

без версиипотому что это будет взято родителем весенней загрузки

...