Предыдущий раздел в документах Hibernate охватывает двунаправленные отношения «один ко многим» и описывает то, к чему вы, вероятно, привыкли, со стандартным внешним ключом для множества сущностей. Как уже говорили другие, этот ответ подходит только тогда, когда вы явно хотите однонаправленные отношения.
Вы бы хотели однонаправленности, только если многие стороны не должны знать об отношениях. Это означает, что класс со стороны не может иметь атрибут для представления отношений, почти по определению. Поэтому подумайте об этой проблеме как о вопросе «как мне представить отношения один-ко-многим без обычного подхода».
Желание однонаправленных отношений, таких как это, конечно, несколько необычно, но я могу видеть ситуации, когда вы могли бы хотеть их по причинам разъединения, безопасности, аудита или неизменности. Например, предположим, что вы моделируете клиническое испытание, и ваши занятия проводятся по типу «Пациент и лекарства», и во время испытания вы предоставляете каждому пациенту один из наборов лекарств. Вы хотите, чтобы любая логика, действующая на пациента, была полностью отделена от того, какое лекарство им выделено. Таким образом, вместо использования Patient.setMedication (), как обычно, вы создаете класс соединения MedicationPatientMap и вызываете medication.getMedicationPatientMap (). AddPatient (Patient). Затем вы можете контролировать доступ к лекарству для пациента один-ко-многим с логикой на стороне лекарства.
Я не думаю, что Заказ клиента является хорошим примером этого, потому что обычно наша ментальная модель заказов предполагает, что Клиенты будут доступны из этого. И действительно, большую часть времени вы не