使用hibernate环境审核@Embeddable@ElementCollection



我有一个包含@Embeddable @ElementCollectionEntity。当我试图坚持这一点时,我一直得到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.", "."));
    }
}

相关内容

  • 没有找到相关文章

最新更新