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 br...@apache.org on 2003/01/02 10:36:19 UTC
cvs commit: jakarta-ojb/src/java/org/apache/ojb/broker/singlevm PersistenceBrokerImpl.java
brj 2003/01/02 01:36:19
Modified: src/java/org/apache/ojb/broker/singlevm
PersistenceBrokerImpl.java
Log:
support "distinct" in getCount()
Revision Changes Path
1.102 +18 -3 jakarta-ojb/src/java/org/apache/ojb/broker/singlevm/PersistenceBrokerImpl.java
Index: PersistenceBrokerImpl.java
===================================================================
RCS file: /home/cvs/jakarta-ojb/src/java/org/apache/ojb/broker/singlevm/PersistenceBrokerImpl.java,v
retrieving revision 1.101
retrieving revision 1.102
diff -u -r1.101 -r1.102
--- PersistenceBrokerImpl.java 31 Dec 2002 11:42:41 -0000 1.101
+++ PersistenceBrokerImpl.java 2 Jan 2003 09:36:18 -0000 1.102
@@ -2275,8 +2275,9 @@
{
ReportQueryByCriteria reportQuery;
Criteria reportCrit = null;
- String[] columns = new String[]{"count(*)"};
Iterator iter;
+ FieldDescriptor[] pkFields = getClassDescriptor(query.getSearchClass()).getPkFields();
+ String[] columns = new String[pkFields.length];
int result = 0;
// build a ReportQuery based on query
@@ -2285,7 +2286,21 @@
{
reportCrit = query.getCriteria().copy(false, false, false);
}
-
+
+ // BRJ: add a column for each pkField, make it distinct if query is distinct
+ // tbd check if it really works for multiple keys ?
+ for (int i = 0; i < pkFields.length; i++)
+ {
+ if (query.isDistinct())
+ {
+ columns[i] = "count(distinct " + pkFields[i].getAttributeName() + ")";
+ }
+ else
+ {
+ columns[i] = "count(" + pkFields[i].getAttributeName() + ")";
+ }
+ }
+
// BRJ: we have to preserve indirection table !
if (query instanceof MtoNQuery)
{