Что это делает? более странно то, что LazyLoading работает в интеграционном тесте (через @SpringBootTest), но не в развернутом состоянии (Spring Boot 3.3.2), когда поступает HTTP-запрос.
Сущности сопоставляются следующим образом:
Код: Выделить всё
@Entity
public class VtBsoEntity {
@Id
private UUID id;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "arriving_train_id", referencedColumnName = "id")
private VtTrainEntity arrivingTrain;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "leaving_train_id", referencedColumnName = "id")
private VtTrainEntity leavingTrain;
...
}
@Entity
public class VtTrainEntity {
@Id
private UUID id;
private Integer trainNo;
...
}
Код: Выделить всё
@RestController
public class TemplateMetadataController {
private final TemplateMetadataService service;
public ResponseEntity findAllTemplates() {
final List templates = service.findAll(); // point of failure (stack trace)
...
}
...
}
Код: Выделить всё
@Service
public class TemplateMetadataService () {
private final NumberCalculatorService numberCalculatorService;
@Transactional(isolation = Isolation.READ_COMMITTED, readOnly = true)
public List findAll() {
...
return mapToModel()
}
private TemplateMetadataModel mapToModel() {
...
numberCalculatorService.getNumberModel(templateMetadataEntity); // point of failure (stack trace)
}
}
Код: Выделить всё
@Service
public class NumberCalculatorService {
private final VtBsoEntityRepository vtBsoEntityRepository;
public AggregateBsoNumberModel getNumberModel(TemplateMetadataEntity entity) {
List bsoList = vtBsoEntityRepository
.findAllByMuWoIdAndActive(entity.getId(), true);
bsoList.getFirst().getArrivingTrain(); // LazyInitializationException, no session
...
}
}
Подробнее здесь: https://stackoverflow.com/questions/788 ... ion-org-sp