java - 如何在 Hibernate 中持久化 Map<String, List<Object>>

标签 java hibernate jpa persistence h2

我有一个包含 MyObject 实例的 MapMyObject 类使用 JPA 来保存其字段:

@OneToMany(cascade = CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
private Map<String, MyObject> results = new HashMap<String, MyObject>();

我们将Map 存储的 更改为List:

private Map<String, List<MyObject>> results = new HashMap<String, List<MyObject>>();

但是在启动时我们收到堆栈跟踪:

Caused by: org.hibernate.AnnotationException: Use of @OneToMany or @ManyToMany targeting an unmapped class: com.me.myapp.MyObject.results[java.util.List]
    at org.hibernate.cfg.annotations.CollectionBinder.bindManyToManySecondPass(CollectionBinder.java:1150)
    at org.hibernate.cfg.annotations.CollectionBinder.bindStarToManySecondPass(CollectionBinder.java:680)
    at org.hibernate.cfg.annotations.MapBinder$1.secondPass(MapBinder.java:107)
    at org.hibernate.cfg.CollectionSecondPass.doSecondPass(CollectionSecondPass.java:66)
    at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:1221)
    at org.hibernate.cfg.AnnotationConfiguration.secondPassCompile(AnnotationConfiguration.java:383)
    at org.hibernate.cfg.Configuration.buildMappings(Configuration.java:1206)
    at org.springframework.orm.hibernate3.LocalSessionFactoryBean.buildSessionFactory(LocalSessionFactoryBean.java:673)
    at org.springframework.orm.hibernate3.AbstractSessionFactoryBean.afterPropertiesSet(AbstractSessionFactoryBean.java:211)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1368)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1334)
    ... 30 more

Hibernate 不支持保留包含(作为值)List 类型的 Map 吗?或者我的注释不正确?我没有在任何文档或示例中找到此特定配置。

最佳答案

映射中存储的对象必须是oneToMany关联的目标对象(总是映射的)。您不能在那里存储任意对象或集合。

关于java - 如何在 Hibernate 中持久化 Map<String, List<Object>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9283966/

相关文章:

java - 字符串中读取的每个字符的打印错误

Hibernate 与 Entity Bean

具有多个命名参数和结果集的 Hibernate 存储过程调用不起作用

java - JPQL 和 JPA 中的 native 查询 'GROUP_CONCAT' 是否有替代方案?

java - JPA 托管实体 : Is a searched Entity still a Managed Entity

java - Android应用程序连接到外部数据库

java - Retrofit 2在请求数据中命名变量时添加java类名

java - 类文件常量池中存在非法 UTF8 字符串

java - 如何在 JSP 页面上映射一对多关系并在提交页面时存储它们?

java - 在 Hibernate 中多次获取父类