Java 找到同一集合的两个表示形式-@ElementCollection
在这种情况下,我有两门课。其中嵌入了一个Memo类: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"
@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