【问题标题】:Hibernate Enver : @AuditMappedBy is not workingHibernate Enver:@AuditMappedBy 不工​​作
【发布时间】:2017-11-28 12:47:31
【问题描述】:

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

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

我遇到了异常

无法解析属性:aId_id of: .B_AUDIT [select e__ from B_AUDIT e__ where e__.aId_id = :a_id and e__.originalId.REV.id :revision 或 e__.REVEND 为 null)]

以下是我的课程详情

@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

感谢您的支持。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    【讨论】:

      猜你喜欢
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多