启用查询多个实体的修订

时间:2020-05-15 07:39:30

标签: hibernate hibernate-envers

我们想在一个可分页的列表中显示多个实体的修订版。 AuditQuery仅支持查询单个实体,如下例所示。

  final AuditQuery documentQuery = auditReader.createQuery()
    .forRevisionsOfEntity(Component.class, false, true)
    .add(AuditEntity.id().eq(component.getId()))
    .addOrder(AuditEntity.revisionNumber().desc())
    .setMaxResults(10)
    .setFirstResult(0);

我们真正想要的是一个查询实现,如下所示:

  final AuditQuery documentQuery = auditReader.createQuery()
    .forRevisionsOfEntities(Component.class, Type.class, false, true)
    .add(AuditEntity.id().eq(Component.class, component.getId()))
    .add(AuditEntity.id().eq(Type.class, type.getId()))
    .addOrder(AuditEntity.revisionNumber().desc())
    .setMaxResults(10)
    .setFirstResult(0);

为了使事情更清楚-我只想使用AuditQuery查询多个实体,以从不同实体获取多个修订。

组件和类型之间的关系是一对多的

@Entity
@Table(name = "type")
@Audited(targetAuditMode = RelationTargetAuditMode.AUDITED)
public class Type extends AbstractAuditingEntity implements Serializable,Externalized {

// ...

@OneToMany(mappedBy = "type")
@Audited(targetAuditMode = AUDITED)
private Set<Component> components = new HashSet<>();

// ... 

}

@Entity
@Table(name = "component")
@Audited(targetAuditMode = RelationTargetAuditMode.AUDITED)
public class Component extends AbstractAuditingEntity implements Serializable, Externalized {

// ...

@ManyToOne
@Audited(targetAuditMode = AUDITED)
private Type type;

// ...

}

任何帮助将不胜感激。在此先感谢-西蒙

0 个答案:

没有答案