【问题标题】:How to Store MultivalueMap in MySQL using JPA/Hibernate如何使用 JPA/Hibernate 在 MySQL 中存储 MultivalueMap
【发布时间】:2020-08-17 01:53:41
【问题描述】:

我对 JPA/Hibernate 很陌生。在我的应用程序中,我使用的是 Spring Data JPA。我需要将 MultivalueMap 存储在 Mysql DB 中。我只找到了基于 Map 的示例,而不是 MultiValueMap。

首先,是否可以将 MultiValueMap 存储在 MySQL DB 中?

其次,如果有人在上面给我展示一些好的例子,我会很高兴。

【问题讨论】:

  • 这取决于你想如何存储它。将 MultiValueMap 视为 Map>
  • @Eklavya 我知道什么是 MultiValueMap ,但我不明白如何编写 HIbnernate 代码将其存储在数据库中,任何示例或示例代码都会对我有所帮助。
  • 我贴一个例子

标签: hibernate jpa orm spring-data-jpa spring-data


【解决方案1】:

您可以通过这种方式将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>();
}

在实体类中,对每个 Map.Entry&lt;K, List&lt;V&gt;&gt; 使用 @OneToMany 单向关系 并将@ElementCollection 用于每个地图条目的List&lt;V&gt;

要了解@OneToMany 单向,请参阅here 和 要了解@ElementCollection,请参阅here

对于Set&lt;Map.Entry&lt;K, List&lt;V&gt;&gt;&gt;Map&lt;K, List&lt;V&gt;&gt; 的转换,请参见here

【讨论】:

  • 你试过这个解决方案了吗?
猜你喜欢
  • 2019-10-22
  • 2011-01-08
  • 2019-10-30
  • 2017-12-25
  • 1970-01-01
  • 2011-05-30
  • 2018-06-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多