Получил LazyInitializationException при доступе к перечислению после перехода с весенней загрузки с 1.5 на 2.0 - PullRequest
0 голосов
/ 28 апреля 2019

У меня есть сущность

@Entity
public class MyEntity {

    @Id
    Long id;

    @Column
    @Enumerated(EnumType.STRING)
    Status status;

    @Column
    Integer value;

    public Status getStatus() {
        return status;
    }

    public Integer getValue() {
        return value;
    }

}

public enum Status {
   CREATED, DELETED
}

И есть JpaRepository:

public interface MyEntityRepository extends JpaRepository<MyEntity, Long> {}

Теперь есть контрольный пример (вне какой-либо транзакции):

MyEntity entity = doSomeBusinesLogic();
entity = myEntityRepository.getOne(entity.getId());
assertEquals(1, entity.getValue()); // Works fine
assertEquals(Status.CREATED, entity.getStatus()); // Throws exception

Так что доступ к Integer работает нормально, но доступ к перечислению выдает org.hibernate.LazyInitializationException.

Я получил эту ошибку после перехода с Spring Boot 1.5 (с Hibernate 5.0)в Spring Boot 2.0 (с Hibernate 5.2).

Одним из рабочих решений является выполнение вышеуказанного кода внутри транзакции только для чтения.Но мне нужно понять, почему?И почему это изменилось с Spring Boot 1.5 на 2.0?

Есть идеи?ТИА!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...