Return-Path: Delivered-To: apmail-cayenne-user-archive@www.apache.org Received: (qmail 44577 invoked from network); 2 Feb 2007 14:53:13 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 2 Feb 2007 14:53:13 -0000 Received: (qmail 46219 invoked by uid 500); 2 Feb 2007 14:53:14 -0000 Delivered-To: apmail-cayenne-user-archive@cayenne.apache.org Received: (qmail 46208 invoked by uid 500); 2 Feb 2007 14:53:14 -0000 Mailing-List: contact user-help@cayenne.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@cayenne.apache.org Delivered-To: mailing list user@cayenne.apache.org Received: (qmail 46191 invoked by uid 99); 2 Feb 2007 14:53:14 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Feb 2007 06:53:14 -0800 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=MSGID_FROM_MTA_HEADER,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (herse.apache.org: domain of farocco@hotmail.com designates 65.54.246.97 as permitted sender) Received: from [65.54.246.97] (HELO bay0-omc1-s25.bay0.hotmail.com) (65.54.246.97) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 02 Feb 2007 06:53:03 -0800 Received: from hotmail.com ([65.55.140.29]) by bay0-omc1-s25.bay0.hotmail.com with Microsoft SMTPSVC(6.0.3790.2668); Fri, 2 Feb 2007 06:52:42 -0800 Received: from mail pickup service by hotmail.com with Microsoft SMTPSVC; Fri, 2 Feb 2007 06:52:42 -0800 Message-ID: Received: from 209.4.252.100 by BAY135-DAV19.phx.gbl with DAV; Fri, 02 Feb 2007 14:52:37 +0000 X-Originating-IP: [209.4.252.100] X-Originating-Email: [farocco@hotmail.com] X-Sender: farocco@hotmail.com From: "Frank" To: References: <49D23F7404DC5B4086D7352312597E0FD26687@FNHH-SVMEXDB002.Freenet-AG.de> Subject: Re: how to call a custom query Date: Fri, 2 Feb 2007 09:52:35 -0500 MIME-Version: 1.0 Content-Type: text/plain; format=flowed; charset="iso-8859-1"; reply-type=response Content-Transfer-Encoding: 8bit X-Priority: 3 X-MSMail-Priority: Normal X-Mailer: Microsoft Outlook Express 6.00.2900.3028 x-mimeole: Produced By Microsoft MimeOLE V6.00.2900.3028 X-OriginalArrivalTime: 02 Feb 2007 14:52:42.0386 (UTC) FILETIME=[CA937F20:01C746D9] X-Virus-Checked: Checked by ClamAV on apache.org Thank you... I will have a look at it. Regards, Frank ----- Original Message ----- From: "Michael Gentry" To: Sent: Friday, February 02, 2007 8:53 AM Subject: Re: how to call a custom query I do agree with everyone that it is best to not use raw SQL if you can avoid it. Have you looked at any of the Cayenne examples? I wrote this one a while back, which might be helpful (even if you just kind of trace through it without having downloading/installing the code into Eclipse): http://cwiki.apache.org/CAY/cayenne-in-motion.html It shows how to do relationships/etc, too. There are several others, plus the modeling guide, etc. Thanks, /dev/mrg On 2/2/07, Peter Schr�der wrote: > hi frank, > > you may use the object-graph to execute the queries you want. there is no > joining with cayenne-syntax. cayenne will translate your query into an > sql-statement with any joins that will be nessessary. > > so > > query += " FROM schedules"; > > query += " INNER JOIN procedures ON schedules.procedure_id = > procedures.procedure_id"; > > query += " INNER JOIN providers ON schedules.provider_id = > providers.provider_id"; > > may go as something like > > "where schedules.procedureId = XYZ and schedules.proviederId = ABC" > > cayenne sees the relation and creates a join or what ever it thinks that > should be done. > > > > -----Urspr�ngliche Nachricht----- > Von: Frank [mailto:farocco@hotmail.com] > Gesendet: Freitag, 2. Februar 2007 04:42 > An: user@cayenne.apache.org > Betreff: Re: how to call a custom query > > >>I'm not sure why do you want to execute just a SQL. After doing query > like you are proposing no data could be edited and saved back to db > easily. > Cayenne is a ORM, so why not getting a list of schedules ordered by > procedure name: > Expression exp = ExpressionFactory.matchExpr(Schedule.DATE_PROPERTY, > new Date()); > << > I do not know how to join tables in the Modeler, that is why I opted for > the > rawSelect. > If I just use the Schedule.class, there is no procedure_name field, just > procedure_id > > Frank > ----- Original Message ----- > From: "Marcin Skladaniec" > To: > Sent: Thursday, February 01, 2007 10:09 PM > Subject: Re: how to call a custom query > > > > Hi > > schedule_date = CURDATE(): > > what is the schedule_date data type ? Check if you are not comparing > > TIMESTAMP with DATE. > > > > > > I would use the functionality of NamedQuery. All you do you define a > > Query in Modeller, example : > > > > SELECT #result('count(*)' 'int' 'C') FROM $entityName $whereClause > > > > and in the code you do something like : > > > > HashMap map = new HashMap(); > > map.put("entityName", entity); > > map.put("whereClause", where); > > > > NamedQuery query = new NamedQuery("SpecialCount", map); > > Map row = (Map) getContext().performQuery(query).get(0); > > return ((Number) row.get("C")).intValue(); > > > > > > I'm not sure why do you want to execute just a SQL. After doing query > > like you are proposing no data could be edited and saved back to db > > easily. > > Cayenne is a ORM, so why not getting a list of schedules ordered by > > procedure name: > > Expression exp = ExpressionFactory.matchExpr(Schedule.DATE_PROPERTY, > > new > > Date()); > > Ordering o = new Ordering(Schedule.PROCEDURE_PROPERTY > > +"."+Procedure.NAME_PROPERTY); > > SelectQuery sq = new SelectQuery(Schedule.class, exp); > > sq.addOrdering(o); > > > > List schedules = context.performQuery(sq); > > so you have the schedules > > now just access the values you are want to display. > > > > Marcin > > > > > > On 02/02/2007, at 12:41 PM, Frank wrote: > > > >> Here is my code. > >> My table show no data. I have three records for this query. > >> > >> I am trying to display procedure_name, provider_name, office_phone, > >> alt_phone > >> The _Schedules class does not have these fields. > >> What do I need to do? > >> > >> Thanks > >> Frank > >> public List getRecords() { > >> > >> String query = "SELECT ALL > >> schedules.schedule_id,schedules.schedule_date,"; > >> > >> query += " procedures.procedure_name,providers.provider_name,"; > >> > >> query += " providers.office_phone,providers.alt_phone"; > >> > >> query += " FROM schedules"; > >> > >> query += " INNER JOIN procedures ON schedules.procedure_id = > >> procedures.procedure_id"; > >> > >> query += " INNER JOIN providers ON schedules.provider_id = > >> providers.provider_id"; > >> > >> query += " WHERE schedule_date = CURDATE()"; > >> > >> query += " ORDER BY procedure_name"; > >> > >> DataContext context = DataContext.getThreadDataContext(); > >> > >> SQLTemplate rawSelect = new SQLTemplate(Schedules.class, query); > >> > >> List records = context.performQuery(rawSelect); > >> > >> return records; > >> > >> } > >> > >> ----- Original Message ----- From: "Christian Mittendorf" > >> > >> To: > >> Sent: Thursday, February 01, 2007 7:16 PM > >> Subject: Re: how to call a custom query > >> > >> > >>> Please check out the documentation at the great new Cayenne homepage: > >>> > >>> http://cayenne.apache.org/doc20/queries.html > >>> > >>> ...especially the part on SQLTemplates > >>> > >>> Christian > >>> > >>> P.S. The link to the API (http://cayenne.apache.org/1_2/api/ cayenne/ > >>> org/objectstyle/cayenne/query/package-summary.html) from the 1.2 > >>> documentation returns a 404 error.... > >>> > >>> > >>> Am 02.02.2007 um 01:02 schrieb Frank: > >>> > >>>> Can anyone help me with the a short example on how to do this? > >>>> > >>>> Thanks > >>>> > >>>> Frank > >>>> ----- Original Message ----- From: "Frank" > >>>> To: > >>>> Sent: Thursday, February 01, 2007 11:33 AM > >>>> Subject: how to call a custom query > >>>> > >>>> > >>>>> Hello, > >>>>> > >>>>> I have the following raw query defined. > >>>>> SELECT BSYDTAA.BSYPEMP.EMHSP#, BSYDTAA.BSYPEMP.EMYLNM, > >>>>> BSYDTAA.BSYPEMP.EMYFNM, BSYDTAC.BPRPPCP.PCDEP4, > >>>>> BSYDTAC.BPRPPCP.PCLDDS, BSYDTAA.BSYPEMP.EMEMP# AS EMEMP, > >>>>> BSYDTAA.BSYPEMP.EMWPH# AS WPHONE FROM BSYDTAA.BSYPEMP, > >>>>> BSYDTAC.BPRPPCP WHERE BSYDTAA.BSYPEMP.EMHSP# = > >>>>> BSYDTAC.BPRPPCP.PCHSP# > >>>>> AND BSYDTAA.BSYPEMP.EMDEP4 = BSYDTAC.BPRPPCP.PCDEP4 AND > >>>>> (BSYDTAA.BSYPEMP.EMHSP# IN (1,5)) AND (BSYDTAA.BSYPEMP.EMDOT=0) > >>>>> AND EMEMP# = ? > >>>>> > >>>>> How do I call this from code using the SelectQuery and passing in > >>>>> the value? > >>>>> > >>>>> Thanks > >>>>> > >>>>> Frank > >>>>> > >>>> > >>> > >> > > > > Marcin > > > > > > > > > >