Мой примитивный инстинкт, что обе таблицы должны иметь внешний ключ, ссылающийся друг на друга, чтобы установить двунаправленное отношение один к одному
Ваши инстинкты подвели вас. Домен, описанный в вашем вопросе, сгенерирует 2 таблицы базы данных:
assessment_data
----------------
id
assessment
----------------
id
assessment_data_id
Используя SQL, мы можем получить assessment
, связанный с assessment_data
с идентификатором 4
select * from assessment where assessment_data_id = 4
Мы также можем пойти другим путем и получить assessment_data
, связанный с assessment
с идентификатором 5, используя
select ad.* from assessment_data ad
inner join assessment a ON a.assessment_data_id = ad.id
where a.id = 5
Так что, если мы можем «пойти по обоим направлениям» в SQL, то мы можем сделать это с помощью HQL, запросов критериев, динамических методов поиска и т. Д., Поскольку все они в конечном итоге переводятся в SQL.