Когда пользователь добавляет новую запись во внешний интерфейс, вызывается этот внутренний метод:
@PostMapping(path = "recordings/add")
@Transactional
public RecordingDTO add(@RequestBody RecordingDTO recordingDTO) {
Recording recording = new Recording();
recording.setAgentId(recordingDTO.getAgent().getId());
recording.setProjectId(recordingDTO.getProject().getId());
... other irrelevant fields are set here...
Recording savedRecording = recordingsRepository.save(recording);
Recording retrievedSavedRecording = recordingsRepository.findById(savedRecording.getId()).get();
return new RecordingDTO(retrievedSavedRecording);
}
Запись - это объект, который выглядит следующим образом:
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
@Column(name = "agent_id")
private Long agentId;
@Column(name = "project_id")
private Long projectId;
... more columns here; omitted for not being relevant
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "agent_id", referencedColumnName = "id", insertable = false, updatable = false)
public Agent agent;
@OneToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "project_id", referencedColumnName = "id", insertable = false, updatable = false)
public Project project;
Таким образом, сущность Запись имеет 2 дочерних сущности, связанных с ней: Агент и Проект. Проблема в том, что после вызова сохранения savedEntity не имеет проксированных методов getAgent () и getProject (). Поля агента и проекта пустые. Даже retrievedSavedRecording не имеет этих двух полей.
Что мне нужно сделать, чтобы получить агент и дочерние объекты проекта?