0

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

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

我遇到了一个例外

无法解析属性:aId_id of: .B_AUDIT [从 B_AUDIT e__ 中选择 e__ 其中 e__.aId_id = :a_id 和 e__.originalId.REV.id <= :revision 和 REVTYPE != :delrevisiontype 和 (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

谢谢您的支持。

4

1 回答 1

0

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

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

@Entity 
@Table(name = "B") 
@Audited
public class B {
  // other stuff removed for breavity
  @ManyToOne
  private A a;
}
于 2017-11-28T13:51:13.537 回答