Java 找到同一集合的两个表示形式-@ElementCollection

Java 找到同一集合的两个表示形式-@ElementCollection,java,hibernate,jpa-2.0,Java,Hibernate,Jpa 2.0,在这种情况下,我有两门课。其中嵌入了一个Memo类: @Entity class Project { ... @Embed private Memo memo; ... } 以及可嵌入的Memo类: @Embeddable public class Memo implements Serializable { @ElementCollection(fetch = FetchType.EAGER) @CollectionTable(name = "MEMO_LINES"

在这种情况下,我有两门课。其中嵌入了一个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>();

}
但是,不刷新实体时不会发生这种情况

此错误通常出现在一个/多个关系中。但事实并非如此。这也不是戏!框架只是普通的Spring/JPA/Hibernate

Spring 3.1.1.RELEASE,Hibernate 4.1.4.Final,JDK7u7,Linux 64

以前有人吃过这个吗?或者对错误的实际含义做出合理解释

更新:它与flush()相关。

如果只有一次刷新,它似乎可以工作。如果中介刷新完成,那么它将抛出异常。一个混乱的解决方案是在保存数据的第一个方法的出口处刷新。用于持久化的封闭方法调用检查threadlocal变量,看看它们是否应该刷新

但肯定有更好的方法

Caused by: org.hibernate.HibernateException: Found two representations of same collection: Project.memo.memoLines