如何使用JPA/Hibernate在MySQL中存储MultivalueMap [英] How to Store MultivalueMap in MySQL using JPA/Hibernate

查看:82
本文介绍了如何使用JPA/Hibernate在MySQL中存储MultivalueMap的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我对JPA/休眠非常陌生.在我的应用程序中,我正在使用Spring Data JPA.我需要将MultivalueMap存储在Mysql DB中.我发现仅基于Map而不是MultiValueMap的示例.

I am very new to JPA/Hibernate. In my app, I am using Spring Data JPA. I have a requirement to store MultivalueMap in Mysql DB. I have found examples only based on Map, but not MultiValueMap.

首先可以在MySQL DB中存储MultiValueMap吗?

第二,如果有人在上面给我展示了一些很好的例子,我会很高兴.

推荐答案

您可以通过这种方式将Map<K, List<V>>存储为Set<Map.Entry<K, List<V>>>.

You can store Map<K, List<V>> as Set<Map.Entry<K, List<V>>> this way.

@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类中,对每个Map.Entry<K, List<V>>使用@OneToMany单向关系 并对每个地图条目的List<V>使用@ElementCollection.

In Entity class use @OneToMany Unidirectional relation for every Map.Entry<K, List<V>> and use @ElementCollection for List<V> of every map entry.

要了解有关@OneToMany单向的信息,请参见此处

To learn about @OneToMany Unidirectional see here and to learn about @ElementCollection see here

对于Set<Map.Entry<K, List<V>>>Map<K, List<V>>的会话,请参见此处

And for Set<Map.Entry<K, List<V>>> to Map<K, List<V>> converstion see here

这篇关于如何使用JPA/Hibernate在MySQL中存储MultivalueMap的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆