В соответствии с документацией Hibernate имеется несколько аннотаций, если мы хотим использовать карту как ассоциацию между нашими объектами. Док говорит:
В качестве альтернативы ключ карты отображается в выделенный столбец или столбцы. Чтобы настроить отображение, используйте один из следующих Аннотации:
@MapKeyColumn, если ключ карты является основным типом. Если вы не указали имя столбца, имя свойства, за которым следует знак подчеркивания используется KEY (например, orders_KEY). @MapKeyEnumerated/ @MapKeyTemporal, если тип ключа карты является соответственно перечислением или датой. @MapKeyJoinColumn/@MapKeyJoinColumns, если тип ключа карты - другой организация. @AttributeOverride/@AttributeOverrides, когда ключ карты является встраиваемый объект. Используйте ключ. как префикс для вашего встраиваемого объекта имена свойств. Вы также можете использовать @MapKeyClass для определения типа ключ, если вы не используете дженерики.
Сделав несколько примеров, я могу понять, что @MapKey просто используется для сопоставления ключа с объектом целевого объекта, и этот ключ используется только для получения записей. @MapKeyColumn используется для сопоставления ключа с объектом целевого объекта, и этот ключ используется для сохранения, а также для извлечения записей. Пожалуйста, дайте мне знать, если это правильно.
Также, пожалуйста, дайте мне знать, когда мне нужно использовать @MapKeyJoinColumn/@MapKeyJoinColumns и @MapKeyEnumerated/@MapKeyTemporal
Спасибо!