我有一个包含@Embeddable @ElementCollection
的Entity
。当我试图坚持这一点时,我一直得到NonUniqueObjectException
。
@Entity
@Audited
public class Entity(){
private Long entityId;
@ElementCollection
private Set<MyEmbeddableCollection> collections = new HashSet<MyEmbeddableCollection>();
}
@Embeddable
public class myEmbeddableCollection(){
private String myId;
查看日志,我可以看到Envers没有在Envers表中包含myId
。仅包括对实体的引用。
[HIST_Entity_collections#{revision_id=DefaultRevisionEntity(id = 3, revisionDate = 2013-sep-04 08:44:56), revisionTyp=ADD, entityId=1}]
我使用的是hibernate环境4.2.0.Final-redhat-1。有人对为什么会发生这种情况有任何解决方案或解释吗?
Hibernate中有一个bug,请参阅此处,看起来像是您的问题。
这里有一个变通方法:
public class FixedDefaultComponentSafeNamingStrategy extends DefaultComponentSafeNamingStrategy {
@Override
public String propertyToColumnName(String propertyName) {
return super.propertyToColumnName(propertyName.replace(".collection&&element.", "."));
}
}