我正在查询
AuditQuery si_query = audQueryCreator.forRevisionsOfEntity(SecurityIdentifiers.class, false, false)
.add(AuditEntity.revisionNumber().eq(revision_Id));
以上查询不包含已删除的数据(修订类型为' 2'的数据)。
如果我添加以下代码
si_query.add(AuditEntity.revisionType().eq(RevisionType.DEL));
然后它只获取已删除的数据,这是我不想要的。
我希望删除的数据以及插入的数据和修改后的数据。
此查询会显示除已删除的数据之外的所有其他数据。
所以请告诉我如何查询以包含已删除的数据。
答案 0 :(得分:1)
问题在于你的用法,特别是最后一个论点,也可能是第二个论点。
为了在结果中返回已删除的行,您必须将该方法的最后一个参数指定为true
。该参数的方法java文档说:
如果为true,则还将返回删除实体的修订。除id字段外,其他实体将具有修订类型“delete”,并且不包含任何数据(所有字段为null)。
我的下一个问题是您期望的结果对象类型。这与方法的第二个参数有关。该参数的方法java文档说:
如果为true,则执行此查询将返回实体列表,而不是三元素数组列表。
所以问题是你是否希望返回的值列表是实际的审计实体实例,或者你是否期望它是List<Object[]>
,其中每个对象数组行包含一组特定的值。
通过指定true
,结果为List<Object>
,但false
为List<Object[]>
。
如果您使用false
,则每行将包含:
HTH。