如何使用JPA/Hibernate在MySQL中存储MultivalueMap [英] How to Store MultivalueMap in MySQL using JPA/Hibernate
问题描述
我对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屋!