我正在尝试将可嵌入/可序列化对象的集合作为我实体中的一个字段。我已经看到了你将列表包装在另一个可序列化的类中的技巧,并将整个事件存储为高亮,但这感觉就像一个黑客。据我所知,执行此操作的jpa方法是在列表顶部添加@ElementCollection(targetClass=BlaBlaBla.class)
注释。我已将我的BlaBlaBla类注释为Embeddable。
不幸的是,Appengine给了我这个例外:
javax.persistence.PersistenceException: Class "data.Contact" has collection field "properties" and this has no mapping in the table for the element class "data.EntityReference"
org.datanucleus.jpa.NucleusJPAHelper.getJPAExceptionForNucleusException(NucleusJPAHelper.java: 264)
org.datanucleus.jpa.EntityTransactionImpl.commit(EntityTransactionImpl.java: 122)
org.datanucleus.store.appengine.jpa.DatastoreEntityTransactionImpl.commit(DatastoreEntityTransactionImpl.java: 55)
序列化类hack真的有必要吗?任何帮助都会很热。
答案 0 :(得分:2)
@ElementCollection
已在JPA 2.0中引入GAE/J currently only supports JPA 1.0。换句话说,@ElementCollection
不可用。
所以要么使用序列化黑客(我不喜欢它),要么将关联映射为OneToMany
。