Java 获取根实体及其集合中实体的修订号
目前,我正在我们的集成应用程序中试用envers库。每当我执行getRevisions时,我只获取根实体的修订 不过,我希望Envers也能够获得所附集合中实体的修订。我尝试了一些自定义查询,但无法通过连接或其他方式将两者结合在一起 实体如下: 实体:表格Java 获取根实体及其集合中实体的修订号,java,hibernate,hibernate-envers,Java,Hibernate,Hibernate Envers,目前,我正在我们的集成应用程序中试用envers库。每当我执行getRevisions时,我只获取根实体的修订 不过,我希望Envers也能够获得所附集合中实体的修订。我尝试了一些自定义查询,但无法通过连接或其他方式将两者结合在一起 实体如下: 实体:表格 @Audited @Entity(name = "Form") @DisplayProperty(displayProperty1 = "name") public class Form extends IdentityIdEntity<
@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>();
}
@已审核
@实体(name=“Form”)
@DisplayProperty(displayProperty1=“名称”)
公共类表单扩展了IdentityIdEntity{
@OneToMany(fetch=FetchType.LAZY,cascade=CascadeType.ALL)
@映射键(name=“id”)
私有映射元素=新的HashMap();
}
实体: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;
}
@已审核
@实体(name=“FormElement”)
@继承(策略=InheritanceType.JOINED)
@DisplayProperty(displayProperty1=“名称”)
公共抽象类FormElement扩展了TranslateableIdentityIdentity实现
可比{
@列(长度=50,可空=false)
私有字符串名称;
}
服务: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;
}
公共列表查找版本表单(表单){
AuditReader AuditReader=AuditReaderFactory.get(sessionFactory.getCurrentSession());
logger.info(auditReader.getRevisions(Form.class,Form.getId()).toString());
List resultList=auditReader.createQuery()。用于修改实体(FormElement.class,false,true)
.addProjection(AuditEntity.revisionNumber()).add(AuditEntity.property(“form_id”).eq(form.getId())
.getResultList();
logger.info(结果列表);
返回null;
}
第一个日志返回:
信息:[16,19,20,24]
第二个返回:
信息:[24,25]
但我想得到以下结果:
信息:[16,19,20,24,25]
我使用的是Hibernate 3.5.6,目前无法升级到新版本,因此我正在这个版本中寻找解决方案
欢迎任何帮助,我们将不胜感激请参见