Как сохранить MultivalueMap в MySQL, используя JPA / Hibernate - PullRequest
0 голосов
/ 02 мая 2020

Я очень новичок в JPA / Hibernate. В моем приложении я использую Spring Data JPA. У меня есть требование хранить MultivalueMap в Mysql DB. Я нашел примеры только на основе Map, но не MultiValueMap.

Во-первых, возможно ли сохранить MultiValueMap в MySQL DB?

Second Буду рад, если кто-нибудь покажет мне хороший пример выше.

1 Ответ

0 голосов
/ 03 мая 2020

Таким способом вы можете сохранить Map<K, List<V>> как Set<Map.Entry<K, List<V>>>.

@Entity
public class Entity {
    //...
    @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true)
    @JoinColumn(name = "entity_id")
    private Set<MultiValueMapEntry> multiValueMap = new ArrayList<>();
}

@Entity
public class MultiValueMapEntry {
    private String key;

    @ElementCollection
    private List<String> values = new ArrayList<String>();
}

В классе Entity используйте @OneToMany Однонаправленное отношение для каждого Map.Entry<K, List<V>> и используйте @ElementCollection для List<V> каждой карты. entry.

Чтобы узнать о @OneToMany Unidirectional, см. здесь и узнать о @ElementCollection см. здесь

И для Set<Map.Entry<K, List<V>>> до Map<K, List<V>> разговор см. здесь

...