Hibernate Enver:@AuditMappedBy无效

时间:2017-11-28 12:47:32

标签: java hibernate hibernate-envers hibernate-entitymanager nhibernate-envers

我创建了一个A,定义名称的实例,带有一组空白的实体B并将其保存到DB中。这是修订版#1。现在我使用以下语句来获取A类的所有初始修订

//Get revisions
A a  = auditReader.find(A.class, aId, revisions.get(0));

我收到了异常

无法解析属性:aId_id:.B_AUDIT [从B_AUDIT e__中选择e__,其中e __。aId_id =:a_id和e__.originalId.REV.id< =:revision和REVTYPE!=:delrevisiontype and( e__.REVEND.id>:修订版或e __。REVEND为空)]

以下是我的课程详情

@Table(name = "A")
@Audited
public class A{
@Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;
    ....

    @OneToMany(mappedBy = "aId")
    @AuditMappedBy(mappedBy = "aId")
    private List<B> b;
}

B

有@oneToMany关系
@Entity
@Table(name = "B")
@Audited
public class B{

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int id;

    private int aId;
    ...
}

Hibernate Enver版本:5.1.4.Final

感谢您的支持。

1 个答案:

答案 0 :(得分:0)

如果我不得不下注,我相信这可能是因为你决定如何在实体@OneToMany内映射B关系的对方。您将其直接映射到主键值而不是实体类型本身。

换句话说,Envers可能会期待这种映射:

@Entity 
@Table(name = "B") 
@Audited
public class B {
  // other stuff removed for breavity
  @ManyToOne
  private A a;
}