java - JPA 可嵌入物集合

标签 java google-app-engine jpa

我正在尝试将可嵌入/可序列化对象的集合作为我的实体中的一个字段。我见过将列表包装在另一个可序列化类中并将整个事物存储为 lob 的技巧,但这感觉就像是 hack。据我所知,执行此操作的 jpa 方法是在我的列表顶部使用 @ElementCollection(targetClass=BlaBlaBla.class) 注释。我已将我的 BlaBlaBla 类注释为可嵌入。

不幸的是,Appengine 给了我这个异常(exception):

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 真的有必要吗?任何帮助都会很热。

最佳答案

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

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

关于java - JPA 可嵌入物集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3180910/

相关文章:

java - Java 上的可移植应用程序,可与网络摄像头一起使用

java - 为什么 float 有符号零?

java - @PrePersist 正在被调用并修改实体,但没有写入数据库

java - 找不到合适的驱动程序 : jdbc:google:mysql

Spring Data JPA @OneToOne 注释无限递归错误

java - 速度:$display.list() 和对象的集合

google-app-engine - Google Cloud Datastore 中的追溯索引

google-app-engine - 错误 : (gcloud. preview.app)无效的选择: 'run'

postgresql - jpa创建表

java - JPA ids auto_increment 生成