Return-Path: Delivered-To: apmail-incubator-cayenne-user-archive@locus.apache.org Received: (qmail 7262 invoked from network); 18 May 2006 23:35:59 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 18 May 2006 23:35:59 -0000 Received: (qmail 4118 invoked by uid 500); 18 May 2006 23:35:58 -0000 Delivered-To: apmail-incubator-cayenne-user-archive@incubator.apache.org Received: (qmail 4102 invoked by uid 500); 18 May 2006 23:35:58 -0000 Mailing-List: contact cayenne-user-help@incubator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: cayenne-user@incubator.apache.org Delivered-To: mailing list cayenne-user@incubator.apache.org Received: (qmail 4093 invoked by uid 99); 18 May 2006 23:35:58 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 18 May 2006 16:35:58 -0700 X-ASF-Spam-Status: No, hits=0.0 required=10.0 tests= X-Spam-Check-By: apache.org Received-SPF: neutral (asf.osuosl.org: local policy) Received: from [207.69.195.62] (HELO pop-altamira.atl.sa.earthlink.net) (207.69.195.62) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 18 May 2006 16:35:57 -0700 Received: from h-67-100-147-167.nycmny83.covad.net ([67.100.147.167] helo=[192.168.0.101]) by pop-altamira.atl.sa.earthlink.net with esmtp (Exim 3.36 #10) id 1Fgs1o-00049x-00 for cayenne-user@incubator.apache.org; Thu, 18 May 2006 19:35:36 -0400 Mime-Version: 1.0 (Apple Message framework v750) In-Reply-To: <8f985b960605181605h2fe4d83dn68335950ef8f2f0d@mail.gmail.com> References: <8f985b960605181501k1c61f2aenaad1d2e2ea6d763e@mail.gmail.com> <8f985b960605181528g5ef5ef2fsd565b775df8af368@mail.gmail.com> <37FA7EDA-6543-4F94-9415-5AA4D1D07C5C@objectstyle.org> <8f985b960605181555s1a8b9e6cxfc283bee3dbd67a2@mail.gmail.com> <8f985b960605181605h2fe4d83dn68335950ef8f2f0d@mail.gmail.com> Content-Type: text/plain; charset=US-ASCII; delsp=yes; format=flowed Message-Id: <16B19ED6-619F-4960-9844-759166EA54B5@objectstyle.org> Content-Transfer-Encoding: 7bit From: Andrus Adamchik Subject: Re: Error when join table spans datamaps Date: Thu, 18 May 2006 19:35:34 -0400 To: cayenne-user@incubator.apache.org X-Mailer: Apple Mail (2.750) X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Yeah, things can be simplified in case of relationships (i.e. qualifiers matching a single object). A generic solution that works with an arbitrary qualifier will be substantially more involved. Andrus On May 18, 2006, at 7:05 PM, Mike Kienenberger wrote: > On 5/18/06, Mike Kienenberger wrote: >> This is my first-pass at solving the problem at the application level > > Cleaned up version that can go in the Base DataObject class. > > protected List getToManyRelationshipTheHardWay(String > targetPrimaryKey, String joinTable, String sourcePrimaryKey, Class > targetClass) > { > String sql = "select distinct(" + targetPrimaryKey + ") as ID > from " + joinTable + " where " + sourcePrimaryKey + " = $PRIMARY_KEY"; > > // set parameters and run it... > Map parameters = new HashMap(); > parameters.put("PRIMARY_KEY", getPrimaryKey()); > SQLTemplate rawSelect = new SQLTemplate(getClass(), sql, true); > rawSelect.setParameters(parameters); > rawSelect.setFetchingDataRows(true); > List distinctFKList = getDataContext().performQuery(rawSelect); > > List toManyList = new ArrayList(distinctFKList.size()); > Iterator foreignKeyIterator = distinctFKList.iterator(); > while (foreignKeyIterator.hasNext()) > { > DataRow dataRow = (DataRow) foreignKeyIterator.next(); > Object primaryKey = (Object) dataRow.get("ID"); > if (null == primaryKey) continue; > > toManyList.add(DataObjectUtils.objectForPK(getDataContext > (), > targetClass, primaryKey)); > } > > return toManyList; > } >