You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2008/01/31 03:17:03 UTC
svn commit: r616988 -
/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QueryTest.java
Author: arminw
Date: Wed Jan 30 18:17:02 2008
New Revision: 616988
URL: http://svn.apache.org/viewvc?rev=616988&view=rev
Log:
add new tests to reproduce a query bug
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QueryTest.java
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QueryTest.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QueryTest.java?rev=616988&r1=616987&r2=616988&view=diff
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QueryTest.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/test/org/apache/ojb/broker/QueryTest.java Wed Jan 30 18:17:02 2008
@@ -73,6 +73,100 @@
}
/**
+ * ReportQuery returning rows with some "Liquor" data ordered by price
+ */
+ public void testReportQueryDistinct()
+ {
+
+ Criteria crit = new Criteria();
+ Collection results = new Vector();
+ crit.addEqualTo("productGroup.groupName", "Liquors");
+ ReportQueryByCriteria q = QueryFactory.newReportQuery(Article.class, crit);
+ q.setAttributes(new String[]{"articleId", "articleName", "price"});
+ q.addOrderByAscending("price");
+ q.setDistinct(true);
+
+ Iterator iter = broker.getReportQueryIteratorByQuery(q);
+ assertNotNull(iter);
+ while(iter.hasNext())
+ {
+ results.add(iter.next());
+ }
+ assertTrue(results.size() > 0);
+
+ // compare with count
+ int count = broker.getCount(q);
+ assertEquals(results.size(), count);
+
+ }
+
+ /**
+ * test OrderBy joined column
+ */
+ public void testCountDistinctWithInCriteria()
+ {
+ String name = ojbTestMethodIdentifier();
+ Person person = new Person();
+ person.setFirstname("tom");
+ person.setLastname(name);
+
+ Project project_1 = new Project();
+ project_1.setTitle(name);
+ ArrayList list_1 = new ArrayList();
+ list_1.add(person);
+ project_1.setPersons(list_1);
+
+ Project project_2 = new Project();
+ project_2.setTitle(name);
+ ArrayList list_2 = new ArrayList();
+ list_2.add(person);
+ project_2.setPersons(list_2);
+
+ ArrayList list_projects = new ArrayList();
+ list_projects.add(project_1);
+ list_projects.add(project_2);
+ person.setProjects(list_projects);
+
+ // another Project but without associated Person objects
+ Project project_3 = new Project();
+ project_3.setTitle(name);
+ ArrayList list_3 = new ArrayList();
+ // empty list
+ project_3.setPersons(list_3);
+
+ broker.beginTransaction();
+ broker.store(project_1);
+ //broker.store(project_2);
+ broker.store(project_3);
+ broker.commitTransaction();
+
+ broker.clearCache();
+
+ Criteria crit_in = new Criteria().addLike("firstname", "tom")
+ .addOrCriteria(new Criteria().addLike("firstname", "john"));
+ Query in_query = QueryFactory.newReportQuery(Person.class, new String[]{"id"}, crit_in, true);
+ Criteria crit = new Criteria().addLike("title", name).addIn("persons.id", in_query);
+ ReportQueryByCriteria q = QueryFactory.newReportQuery(Project.class, new String[]{"id"}, crit, true);
+ q.setDistinct(true);
+
+ int count = broker.getCount(q);
+ //System.out.println("Count: " + count);
+ assertEquals(2, count);
+
+ List list = new ArrayList();
+ list.add(new Integer(person.getId()));
+ list.add(new Integer(12));
+ list.add(new Integer(13));
+ crit = new Criteria().addIn("persons.id", list);
+ q = QueryFactory.newReportQuery(Project.class, new String[]{"id"}, crit, true);
+ q.setDistinct(true);
+
+ count = broker.getCount(q);
+ //System.out.println("Count: " + count);
+ assertEquals(2, count);
+ }
+
+ /**
* test OrderBy joined column
*/
public void testCountWithInCriteria()
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org