使用hibernate-envers审核@Embeddable @ElementCollection

时间:2013-09-04 07:04:30

标签: java hibernate hibernate-envers embeddable

我的Entity包含@Embeddable @ElementCollection。当我试图坚持这个时,我会继续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未将myId包含在envers表中。仅包括对实体的引用。

[HIST_Entity_collections#{revision_id=DefaultRevisionEntity(id = 3, revisionDate = 2013-sep-04 08:44:56), revisionTyp=ADD, entityId=1}]

我正在使用hibernate-envers 4.2.0.Final-redhat-1。 有没有人对此为何发生任何解决方案或解释?

1 个答案:

答案 0 :(得分:1)

Hibernate中存在一个错误,请参阅here,这看起来像是您的问题。

这是一种解决方法:

public class FixedDefaultComponentSafeNamingStrategy extends DefaultComponentSafeNamingStrategy {
    @Override
    public String propertyToColumnName(String propertyName) {
        return super.propertyToColumnName(propertyName.replace(".collection&&element.", "."));
    }
}