Return-Path: Delivered-To: apmail-cayenne-user-archive@www.apache.org Received: (qmail 51153 invoked from network); 13 Aug 2010 09:12:47 -0000 Received: from unknown (HELO mail.apache.org) (140.211.11.3) by 140.211.11.9 with SMTP; 13 Aug 2010 09:12:47 -0000 Received: (qmail 41501 invoked by uid 500); 13 Aug 2010 09:12:47 -0000 Delivered-To: apmail-cayenne-user-archive@cayenne.apache.org Received: (qmail 40707 invoked by uid 500); 13 Aug 2010 09:12:43 -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 40696 invoked by uid 99); 13 Aug 2010 09:12:42 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 13 Aug 2010 09:12:42 +0000 X-ASF-Spam-Status: No, hits=2.2 required=10.0 tests=FREEMAIL_ENVFROM_END_DIGIT,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,SPF_PASS,T_TO_NO_BRKTS_FREEMAIL X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of apparition077@gmail.com designates 209.85.161.43 as permitted sender) Received: from [209.85.161.43] (HELO mail-fx0-f43.google.com) (209.85.161.43) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 13 Aug 2010 09:12:35 +0000 Received: by fxm9 with SMTP id 9so1794634fxm.16 for ; Fri, 13 Aug 2010 02:12:15 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:sender:received :in-reply-to:references:date:x-google-sender-auth:message-id:subject :from:to:content-type:content-transfer-encoding; bh=AiC+ddp7Tmf3sPEOWutDqioFHlAiAG7T+gfmv+/B9nA=; b=a2ZvdgIMcZuBYVk33m7m77KN03oI9IN9zURfA+B3hQA+i8sDwYuOMEZ+/lh9Dfet+x oPQEbbKghLA9HEIXdH+Ied4t9Js0HlGMt47gTXyAER0L0snDJZd4kBnKRaPqFBKkeJ0r MyYCb3B23W0rXw2XXpZIh0BVUoXBO04ruTpBE= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:sender:in-reply-to:references:date :x-google-sender-auth:message-id:subject:from:to:content-type :content-transfer-encoding; b=wR5tRpOkl6oXTRcXPof3iUrohOnjncw04yORevKlv8DwzNgr/sFkjqL9+D49gNnux2 N8xdDxAW9mEQwfPtgRp7PAy3VZZPm5AFiDMKs2joeAbrIV99kKAD6Cup7DTUL3/VpBaJ xVEZYUk44W1IV7zau0mmrC+hJmu0N4T+tnGdw= MIME-Version: 1.0 Received: by 10.204.57.9 with SMTP id a9mr480326bkh.104.1281690721586; Fri, 13 Aug 2010 02:12:01 -0700 (PDT) Sender: apparition077@gmail.com Received: by 10.204.177.212 with HTTP; Fri, 13 Aug 2010 02:12:01 -0700 (PDT) In-Reply-To: <4C64756E.6030506@smaeur.com> References: <4C64756E.6030506@smaeur.com> Date: Fri, 13 Aug 2010 13:12:01 +0400 X-Google-Sender-Auth: lpamRhnOgke-7pOsIn1MWiOs7tU Message-ID: Subject: Re: Velocity parsing error with "##" From: Evgeny Ryabitskiy To: user@cayenne.apache.org Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Virus-Checked: Checked by ClamAV on apache.org I suggest you could use #bind directive here. SELECT COUNT(JOBNAME) AS RESULT FROM JMASTER WHERE SKDID =3D 67 AND UPPER(JOBNAME) =3D #bind($JOB_PARAM) So if you pass TEST## in JOB_PARAM it will be handled via JDBC as String (not by Velocity), so it will be prepared statement. Also it will protect your application from any SQL-Injection in this param and it's usually faster to user prepared statements (depends from DBMS type). Evgeny. 2010/8/13 Laurent Marchal : > =A0Hi all, > > =A0 =A0After months of using Cayenne 3.0 (which is awesome BTW) I just > discovered that when I put two "##" in some of my object names in databas= e > and then I use some SQLTemplate I have a Velocity error. It seems that > Velocity does not like ## because it's detected as a bad directive. I loo= ked > in the Velocity documentation but to me =A0it's supposed to ignore single > quoted string literals. > > > Caused by: org.apache.cayenne.CayenneRuntimeException: [v.3.0 Apr 26 2010 > 09:59:17] Error parsing template 'SELECT COUNT(JOBNAME) AS RESULT FROM > JMASTER WHERE SKDID =3D 67 AND UPPER(JOBNAME) =3D 'TEST##'' : Lexical err= or: > org.apache.velocity.runtime.parser.TokenMgrError: Lexical error at line 1= , > column 92. =A0Encountered: after : "" > =A0 =A0at > org.apache.cayenne.access.jdbc.SQLTemplateProcessor.buildStatement(SQLTem= plateProcessor.java:149) > =A0 =A0at > org.apache.cayenne.access.jdbc.SQLTemplateProcessor.processTemplate(SQLTe= mplateProcessor.java:122) > =A0 =A0at > org.apache.cayenne.access.jdbc.SQLTemplateAction.performAction(SQLTemplat= eAction.java:125) > =A0 =A0at > org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryActio= n.java:87) > =A0 =A0at org.apache.cayenne.access.DataNode.performQueries(DataNode.java= :269) > > Do you have any advices to make Velocity ignore parsing these names ? > > Thanks. > > > > >