[hibernate-issues] [Hibernate-JIRA] Commented: (HHH-5500) Extend AuditReader interface with findEntities() method

Lukasz Antoniak (JIRA) noreply at atlassian.com
Mon Jul 18 04:45:15 EDT 2011


    [ http://opensource.atlassian.com/projects/hibernate/browse/HHH-5500?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=42962#comment-42962 ] 

Lukasz Antoniak commented on HHH-5500:
--------------------------------------

Erik, could you provide a business scenario where this functionality would be desired? More or less the same can be achieved with {{AuditReader.createQuery().forRevisionsOfEntity()}} query. Please review {{org.hibernate.envers.test.integration.query.RevisionConstraintQuery}} class and the following test method:
{code:title=org.hibernate.envers.test.integration.query.RevisionConstraintQuery|borderStyle=solid}
@Test
public void testMultipleRevisionsOfEntity() {
    List results = getAuditReader().createQuery()
            .forRevisionsOfEntity(StrIntTestEntity.class, true, true)
            .add(AuditEntity.id().eq(id1))
            .add(AuditEntity.revisionNumber().in(new Integer[] {1, 3}))
            .getResultList();

    assert results.size() == 2;
    assert results.get(0).equals(new StrIntTestEntity("a", 10, id1));
    assert results.get(1).equals(new StrIntTestEntity("d", 1, id1));
}
{code}
SQL query generated by Envers:
{code:title=SQL query|borderStyle=solid}
select
    strinttest0_.id as id3103_,
    strinttest0_.REV as REV3103_,
    strinttest0_.REVTYPE as REVTYPE3103_,
    strinttest0_.REVEND as REVEND3103_,
    strinttest0_.number as number3103_,
    strinttest0_.str1 as str6_3103_ 
from
    StrIntTestEntity_AUD strinttest0_ 
where
    strinttest0_.id=? 
    and (
        strinttest0_.REV in (
            ? , ?
        )
    ) 
order by
    strinttest0_.REV asc
{code}
The only difference between existing {{AuditReader.createQuery().forRevisionsOfEntity()}} and proposed {{AuditReader.findEntities()}} method would be the "calculation" of appropriate revision number when entity has been last modified. If an entity of {{StrIntTestEntity}} type was updated during revisions 1, 3, and 5, {{AuditReader.createQuery().forRevisionsOfEntity()}} would return no results for revisions 2 and 4. Proposed {{AuditReader.findEntities()}} shall return snapshot of entity at revision 1 (for passed argument 2), and 3 (for passed argument 4).

Adam, maybe this functionality would be useful?

Regards,
Łukasz Antoniak

> Extend AuditReader interface with findEntities() method
> -------------------------------------------------------
>
>                 Key: HHH-5500
>                 URL: http://opensource.atlassian.com/projects/hibernate/browse/HHH-5500
>             Project: Hibernate Core
>          Issue Type: Sub-task
>          Components: envers
>            Reporter: Erik-Berndt Scheper
>            Assignee: Lukasz Antoniak
>
> To improve performance, it would be benificial to extend the Envers AuditReader interface, so that a list of audited entities can be retrieved in one query.

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

       



More information about the hibernate-issues mailing list