2

在这种情况下,我有两个课程。一个嵌入一个备忘录类:

@Entity
class Project {
  ...
  @Embed
  private 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

但是,在不刷新实体时不会发生。

此错误似乎通常发生在一个/多个关系中。但这里不是这样。这也不是戏剧!框架。只是普通的 Spring/JPA/Hibernate。

Spring 3.1.1.RELEASE、Hibernate 4.1.4.Final、JDK7u7、Linux 64。

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

更新:它与flush()有关

如果只有一次冲洗,它似乎有效。如果完成了中间刷新,那么它会抛出异常。一个混乱的解决方案是在第一种方法持久化数据的出口处刷新。封闭的方法调用持久检查线程局部变量以查看它们是否应该刷新。

但肯定有更好的方法来做到这一点......

4

0 回答 0