From c1312db93432f748ab02382b9e27c8b6a9a67636 Mon Sep 17 00:00:00 2001 From: Adam Warski Date: Fri, 31 Oct 2008 12:14:46 +0000 Subject: [PATCH] HHH-3575: fix with test git-svn-id: https://svn.jboss.org/repos/hibernate/core/trunk@15463 1b8cb986-b30d-0410-93ca-fae66ebed9b2 --- .../query/criteria/AuditConjunction.java | 8 +++-- .../query/criteria/AuditDisjunction.java | 8 +++-- .../query/impl/AbstractVersionsQuery.java | 2 ++ .../test/integration/query/SimpleQuery.java | 29 +++++++++++++++++++ 4 files changed, 43 insertions(+), 4 deletions(-) diff --git a/envers/src/main/java/org/hibernate/envers/query/criteria/AuditConjunction.java b/envers/src/main/java/org/hibernate/envers/query/criteria/AuditConjunction.java index 271f3d0956..0ab272bee6 100644 --- a/envers/src/main/java/org/hibernate/envers/query/criteria/AuditConjunction.java +++ b/envers/src/main/java/org/hibernate/envers/query/criteria/AuditConjunction.java @@ -48,8 +48,12 @@ public AuditConjunction add(AuditCriterion criterion) { public void addToQuery(AuditConfiguration verCfg, String entityName, QueryBuilder qb, Parameters parameters) { Parameters andParameters = parameters.addSubParameters(Parameters.AND); - for (AuditCriterion criterion : criterions) { - criterion.addToQuery(verCfg, entityName, qb, andParameters); + if (criterions.size() == 0) { + andParameters.addWhere("1", false, "=", "1", false); + } else { + for (AuditCriterion criterion : criterions) { + criterion.addToQuery(verCfg, entityName, qb, andParameters); + } } } } diff --git a/envers/src/main/java/org/hibernate/envers/query/criteria/AuditDisjunction.java b/envers/src/main/java/org/hibernate/envers/query/criteria/AuditDisjunction.java index eaac91f866..5c43b781d1 100644 --- a/envers/src/main/java/org/hibernate/envers/query/criteria/AuditDisjunction.java +++ b/envers/src/main/java/org/hibernate/envers/query/criteria/AuditDisjunction.java @@ -48,8 +48,12 @@ public AuditDisjunction add(AuditCriterion criterion) { public void addToQuery(AuditConfiguration verCfg, String entityName, QueryBuilder qb, Parameters parameters) { Parameters orParameters = parameters.addSubParameters(Parameters.OR); - for (AuditCriterion criterion : criterions) { - criterion.addToQuery(verCfg, entityName, qb, orParameters); + if (criterions.size() == 0) { + orParameters.addWhere("0", false, "=", "1", false); + } else { + for (AuditCriterion criterion : criterions) { + criterion.addToQuery(verCfg, entityName, qb, orParameters); + } } } } \ No newline at end of file diff --git a/envers/src/main/java/org/hibernate/envers/query/impl/AbstractVersionsQuery.java b/envers/src/main/java/org/hibernate/envers/query/impl/AbstractVersionsQuery.java index 9577bec2b9..487e7629d7 100644 --- a/envers/src/main/java/org/hibernate/envers/query/impl/AbstractVersionsQuery.java +++ b/envers/src/main/java/org/hibernate/envers/query/impl/AbstractVersionsQuery.java @@ -84,6 +84,8 @@ protected List buildAndExecuteQuery() { qb.build(querySb, queryParamValues); + System.out.println("QUERY: " + querySb.toString()); + Query query = versionsReader.getSession().createQuery(querySb.toString()); for (Map.Entry paramValue : queryParamValues.entrySet()) { query.setParameter(paramValue.getKey(), paramValue.getValue()); diff --git a/envers/src/test/java/org/hibernate/envers/test/integration/query/SimpleQuery.java b/envers/src/test/java/org/hibernate/envers/test/integration/query/SimpleQuery.java index 6ec5cbb69a..bfb66b69d0 100644 --- a/envers/src/test/java/org/hibernate/envers/test/integration/query/SimpleQuery.java +++ b/envers/src/test/java/org/hibernate/envers/test/integration/query/SimpleQuery.java @@ -240,4 +240,33 @@ public void testSelectRevisionTypeQuery() { assert result.get(1).equals(RevisionType.MOD); assert result.get(2).equals(RevisionType.DEL); } + + @Test + public void testEmptyRevisionOfEntityQuery() { + List result = getVersionsReader().createQuery() + .forRevisionsOfEntity(StrIntTestEntity.class, false, true) + .getResultList(); + + assert result.size() == 7; + } + + @Test + public void testEmptyConjunctionRevisionOfEntityQuery() { + List result = getVersionsReader().createQuery() + .forRevisionsOfEntity(StrIntTestEntity.class, false, true) + .add(AuditRestrictions.conjunction()) + .getResultList(); + + assert result.size() == 7; + } + + @Test + public void testEmptyDisjunctionRevisionOfEntityQuery() { + List result = getVersionsReader().createQuery() + .forRevisionsOfEntity(StrIntTestEntity.class, false, true) + .add(AuditRestrictions.disjunction()) + .getResultList(); + + assert result.size() == 0; + } }