Map
にはMyObject
のインスタンスが含まれています。Hibernateで<String、List <Object>>マップを永続化する方法
private Map<String, List<MyObject>> results = new HashMap<String, List<MyObject>>();
しかし、起動時:
@OneToMany(cascade = CascadeType.ALL)
@LazyCollection(LazyCollectionOption.FALSE)
private Map<String, MyObject> results = new HashMap<String, MyObject>();
我々は
Map
List
にによって保存された
値を変更:MyObject
クラスは、そのフィールドを永続化するためにJPAを使用しています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は、以下を保持することをサポートしていません。Map
(値として)List
タイプ?または、注釈が間違っていますか?私は、この特定の構成がドキュメントやサンプルのいずれにも見つかりませんでした。
MyObjectはJPAマップクラスですか? –
@ToddMurray:そうでなければ、OPは 'MyObject.results'フィールドが' @ OneToMany'としてどのように注釈付けされているかに関するエラーメッセージを受け取っていません。 – ruakh
まあ、MyObjectのインスタンスは現在、Hibernateに保存されています。しかし、String-> MyObjectでマップを保存するのではなく、代わりにString-> Listにする必要があります。 –