Как спрятать @Id в Map? Можно ли использовать значение или ключ@ElementCollection
Map,> в качестве @Id при внесении в базу данных? Как при помощи аннотаций объяснить hibernat'у, что я от него требую?
Заранее большое спасибо!

21 Авг 2019 в 06:29
144 +1
1
Ответы
1

В Hibernate нельзя использовать Map в качестве @Id при внесении в базу данных. Основная причина заключается в том, что Map это коллекция, которая не может быть прямо сопоставлена с первичным ключом. Таким образом, Hibernate не сможет корректно обработать такую структуру данных.

Если вы все-таки хотите использовать Map в своей сущности и задать @Id, вам нужно создать дополнительное поле в вашей сущности, которое будет использоваться в качестве первичного ключа. Например, вы можете создать отдельное поле с уникальным идентификатором и использовать его в качестве @Id.

Чтобы Hibernate понял, что вы требуете использовать определенное поле как @Id, вам нужно явно указать его с помощью аннотации @Id над соответствующим полем.

Пример:

@Entity
public class YourEntity {
@Id
private Long id;
@ElementCollection
private Map<String, String> data;
// геттеры и сеттеры
}

В данном примере, поле "id" будет использоваться в качестве первичного ключа сущности, а поле "data" будет хранить вашу Map. Hibernate будет автоматически создавать таблицу для хранения данных из Map.

20 Апр в 13:17
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 84 654 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир