JPA Embeddables系列

时间:2010-07-05 16:17:27

标签: java google-app-engine jpa

我正在尝试将可嵌入/可序列化对象的集合作为我实体中的一个字段。我已经看到了你将列表包装在另一个可序列化的类中的技巧,并将整个事件存储为高亮,但这感觉就像一个黑客。据我所知,执行此操作的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真的有必要吗?任何帮助都会很热。

1 个答案:

答案 0 :(得分:2)

@ElementCollection已在JPA 2.0中引入GAE/J currently only supports JPA 1.0。换句话说,@ElementCollection不可用。

所以要么使用序列化黑客(我不喜欢它),要么将关联映射为OneToMany