У меня есть сущность
@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?
Есть идеи?ТИА!