В этом случае вы можете дважды сопоставить внешний ключ с сущностью, один для фактического ORM и другой для получения FK без фактического запуска нового запроса.
public class Answer {
@JoinColumn(name = "question_id")
@ManyToOne(targetEntity = Question.class, fetch = FetchType.LAZY)
private Question question;
@Column(name = "question_id", insertable = false, updatable = false)
private Long questionId;
}
Здесь question_id
присутствует втаблица answer
.
Таким образом, внешний ключ будет уже доступен в результате первого запроса (в поле questionId), и новый запрос не будет запущен для получения значения FK.