2

目前,我正在我们的应用程序中尝试使用 envers 库进行集成。每当我执行 getRevisions 时,我只会获得根实体的修订。

但是,我希望 Envers 也能够获得所附集合中实体的修订。我尝试了一些自定义查询,但无法通过连接或其他方式将两者结合在一起。

实体如下:

实体:表格

@Audited
@Entity(name = "Form")
@DisplayProperty(displayProperty1 = "name")
public class Form extends IdentityIdEntity<Integer> {

        @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL)
    @MapKey(name = "id")
    private Map<Integer, FormElement> elements = new HashMap<Integer, FormElement>();

}

实体:FormElement

@Audited
@Entity(name = "FormElement")
@Inheritance(strategy = InheritanceType.JOINED)
@DisplayProperty(displayProperty1 = "name")
public abstract class FormElement extends TranslatableIdentityIdEntity<Integer, FormElementTranslation> implements
        Comparable<FormElement> {

        @Column(length = 50, nullable = false)
    private String name;

}

服务:FormVersioningService

public List<Number> findVersionsOfForm(Form form) {
        AuditReader auditReader = AuditReaderFactory.get(sessionFactory.getCurrentSession());

        logger.info(auditReader.getRevisions(Form.class, form.getId()).toString());

        List resultList = auditReader.createQuery().forRevisionsOfEntity(FormElement.class, false, true)
                .addProjection(AuditEntity.revisionNumber()).add(AuditEntity.property("form_id").eq(form.getId()))
                .getResultList();
        logger.info(resultList);

        return null;

    }

第一个日志返回:

信息:[16、19、20、24]

第二个返回:

信息:[24, 25]

但我想得到以下结果:

信息:[16、19、20、24、25]

我正在使用 Hibernate 3.5.6,目前无法升级到新版本,因此我正在寻找此版本中的解决方案。

欢迎任何帮助,我们将不胜感激

4

0 回答 0