在这种情况下,我有两节课。一个嵌入Memo类:
@Entity
class Project {
...
@Embed
private Memo memo;
...
}
可嵌入的Memo类:
@Embeddable
public class Memo implements Serializable {
@ElementCollection(fetch = FetchType.EAGER)
@CollectionTable(name = "MEMO_LINES")
@MapKeyColumn(name = "TITLE",nullable = false)
@Column(name = "VAL",nullable = false)
private Map<String, String> memoLines = new HashMap<String, String>();
}
当刷新Project的合并实例时,我收到错误消息:
Caused by: org.hibernate.HibernateException: Found two representations of same collection: Project.memo.memoLines
但是,不刷新实体时不会发生这种情况。
对于一个/多个关系,通常会出现此错误。但事实并非如此。这也不是Play!框架。只需定期Spring / JPA / Hibernate。
Spring 3.1.1.RELEASE,Hibernate 4.1.4.Final,JDK7u7,Linux 64。
以前有人这样吗?或者对错误究竟意味着什么的任何理性解释?
更新:它与flush()
有关如果只有一次冲洗,它似乎有效。如果完成了中间刷新,那么它将抛出异常。一个混乱的解决方案是在第一个持久化数据的方法的出口处刷新。封闭方法调用持久检查threadlocal变量以查看它们是否应该刷新。
但是肯定有更好的方法......