无法使用 JPA 注释映射哈希图

Posted

技术标签:

【中文标题】无法使用 JPA 注释映射哈希图【英文标题】:Unable to map a hashmap using JPA annotations 【发布时间】:2017-04-02 00:17:44 【问题描述】:

我正在使用 dropwizard,它在内部使用 JPA 注释和休眠来映射对象。其中一个对象有一个地图字段,我将其定义为

    @Column
    @ElementCollection(targetClass=String.class)
    Map<String, String> routes;

我一直看到以下错误

org.hibernate.MappingException: Could not determine type for: java.util.Map, at table 

我已经尝试了 SO 中提到的一些东西

添加了@MapKey注解 在 getter 上添加注释 将 Map 更改为 HashMap 似乎没有任何问题。

【问题讨论】:

你想在哪里保存这个地图?成一列?进入(加入)表?成一列序列化? “targetClass”试图做什么?您在该字段上定义了泛型,因此 targetClass 无关紧要 是作为表序列化的列 在这种情况下,您可以尝试@Lob,或者在此链接datanucleus.org/products/accessplatform_5_1/jpa/… 上使用@AttributeConverter 【参考方案1】:

您可以使用@MapKeyColumn(name="column_name")。此链接可能有用:https://en.wikibooks.org/wiki/Java_Persistence/Relationships#Map_Key_Columns_.28JPA_2.0.29

【讨论】:

添加@MapKeyColumn注解后结果相同 你用 Map routes = new HashMap(); 尝试了下面的代码吗?也使用@MapKeyColumn。检查这个类似的问题:***.com/questions/4324839/… 还有这个:***.com/questions/287201/…

以上是关于无法使用 JPA 注释映射哈希图的主要内容,如果未能解决你的问题,请参考以下文章

(Kotlin)如何将哈希图输出保存到文件中

Rust 从对的迭代器中收集哈希图

使用c ++无序+映射的无效操作数

哈希图共识算法

树图还是哈希图? [复制]

哈希图和向量很慢