Return-Path: Delivered-To: apmail-openjpa-users-archive@minotaur.apache.org Received: (qmail 7823 invoked from network); 14 Dec 2009 21:45:27 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.3) by minotaur.apache.org with SMTP; 14 Dec 2009 21:45:27 -0000 Received: (qmail 9266 invoked by uid 500); 14 Dec 2009 21:45:26 -0000 Delivered-To: apmail-openjpa-users-archive@openjpa.apache.org Received: (qmail 9205 invoked by uid 500); 14 Dec 2009 21:45:25 -0000 Mailing-List: contact users-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: users@openjpa.apache.org Delivered-To: mailing list users@openjpa.apache.org Received: (qmail 9195 invoked by uid 99); 14 Dec 2009 21:45:25 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 14 Dec 2009 21:45:25 +0000 X-ASF-Spam-Status: No, hits=-0.0 required=10.0 tests=SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of mtylenda@o2.pl designates 193.17.41.76 as permitted sender) Received: from [193.17.41.76] (HELO rekin26.go2.pl) (193.17.41.76) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 14 Dec 2009 21:45:17 +0000 Received: from rekin26.go2.pl (rekin26.go2.pl [127.0.0.1]) by rekin26.go2.pl (Postfix) with ESMTP id DB41235D89D for ; Mon, 14 Dec 2009 22:44:46 +0100 (CET) Received: from o2.pl (unknown [10.0.0.33]) by rekin26.go2.pl (Postfix) with SMTP for ; Mon, 14 Dec 2009 22:44:46 +0100 (CET) Subject: =?UTF-8?Q?Re:_"collection-valued-path"_ArgumentException_when_querying?= =?UTF-8?Q?_based_on_multi-valued_elements_in_an_XML_column?= From: =?UTF-8?Q?Mi=C5=82osz?= To: users@openjpa.apache.org In-Reply-To: <55cef61f0912131828m2c4a86e1me8b129da12ba7b9d@mail.gmail.com> References: <55cef61f0912131828m2c4a86e1me8b129da12ba7b9d@mail.gmail.com> Mime-Version: 1.0 Message-ID: <27baa51f.23af5c22.4b26b1cc.73314@o2.pl> Date: Mon, 14 Dec 2009 22:44:44 +0100 X-Originator: 89.74.167.102 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Virus-Checked: Checked by ClamAV on apache.org Hi, I=20guess=20this=20is=20an=20OpenJPA=20limitation=20-=20only=20queries=20= over=20single-valued=20elements=20are=20supported.=20There=20is=20a=20sec= tion=20on=20XML=20mapping=20in=20the=20user=20manual=20[1]. Regards, Milosz [1]=20http://openjpa.apache.org/builds/latest/docs/manual/manual.html#ref= =5Fguide=5Fxmlmapping >=20Hi, >=20 >=20I=20am=20having=20trouble=20executing=20a=20JPA=20named=20query=20tha= t=20uses=20multi-valued >=20elements,=20within=20an=20XML=20column,=20as=20criteria. >=20 >=20I=20have=20a=20table=20with=20the=20following=20DB2=20schema: >=20CREATE=20TABLE=20SWD.Dummy=20( >=20=20=20=20=20=20=20=20=20dummyId=20VARCHAR(32)=20NOT=20NULL, >=20=20=20=20=20=20=20=20=20properties=20XML=20=20NOT=20NULL >=20=20=20=20=20) >=20=20=20=20=20DATA=20CAPTURE=20NONE; >=20 >=20ALTER=20TABLE=20SWD.Dummy=20ADD=20CONSTRAINT=20Dummy=5FPK=20PRIMARY=20= KEY=20(dummyId); >=20 >=20and=20I=20used=20JAXB=20to=20generate=20the=20beans=20for=20marshalli= ng=20&=20unmarshalling=20from >=20the=20XSD=20schema=20defined=20for=20the=20"properties"=20XML=20colum= n.=20My=20XSD=20schema=20is=20as >=20follows: >=20 >=20 >=20 >=20=20=20=20=20 >=20=20=20=20=20 >=20=20=20=20=20=20=20=20=20 >=20=20=20=20=20=20=20=20=20=20=20=20=20=20type=3D"propertyType"=20/> >=20=20=20=20=20=20=20=20=20 >=20=20=20=20=20 >=20=20=20=20=20 >=20=20=20=20=20=20=20=20=20 >=20=20=20=20=20=20=20=20=20=20=20=20=20 >=20=20=20=20=20=20=20=20=20=20=20=20=20 >=20=20=20=20=20=20=20=20=20 >=20=20=20=20=20 >=20 >=20 >=20=20In=20summary,=20the=20element=20"properties"=20is=20the=20root=20e= lement=20and=20it=20contains >=20any=20number=20of=20"property"=20elements=20which=20in=20turn=20may=20= contain=20"keyy"=20and >=20"valuee"=20string=20elements.=20An=20example=20of=20an=20XML=20compli= ant=20with=20the=20schema: >=20 >=20=20?>abc123defxyz >=20 >=20 >=20 >=20I=20am=20able=20to=20use=20JPA=20to=20make=20simple=20queries=20on=20= the=20Dummy=20entity.=20However,=20I >=20get=20an=20error=20if=20I=20try=20to=20query=20on=20the=20"property"=20= element. >=20For=20example,=20I=20get=20an=20exception=20if=20I=20execute=20the=20= following=20JPQL=20query: >=20SELECT=20d=20FROM=20Dummy=20d,=20IN=20(d.properties.property)=20p=20W= HERE=20p.keyy=3D:keyy=20AND >=20p.valuee=3D:valuee >=20 >=20The=20stack=20trace=20that=20I=20get=20is: >=20com.example.DAOException:=20=20error>=20org.apache.openjpa.persistence.ArgumentException: >=20collection-valued-path >=20=20=20=20=20at=20com.example.DummyDAO.findDummyByProperty(DummyDAO.ja= va:142) >=20=20=20=20=20at=20com.example.GetDummyService.invoke(GetDummyService.j= ava:63) >=20=20=20=20=20...=2032=20more >=20Caused=20by: >=20 >=20org.apache.openjpa.persistence.ArgumentException:=20collection-valued= -path >=20=20=20=20=20at >=20org.apache.openjpa.kernel.exps.AbstractExpressionBuilder.traverseXPat= h(AbstractExpressionBuilder.java:269) >=20=20=20=20=20at >=20org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getPath(JPQLExpr= essionBuilder.java:1921) >=20=20=20=20=20at >=20org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.addJoin(JPQLExpr= essionBuilder.java:741) >=20=20=20=20=20at >=20org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.evalFromClause(J= PQLExpressionBuilder.java:680) >=20=20=20=20=20at >=20org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.evalFromClause(J= PQLExpressionBuilder.java:666) >=20=20=20=20=20at >=20org.apache.openjpa.kernel.jpql.JPQLExpressionBuilder.getQueryExpressi= ons(JPQLExpressionBuilder.java:292) >=20=20=20=20=20at=20org.apache.openjpa.kernel.jpql.JPQLParser.eval(JPQLP= arser.java:67) >=20=20=20=20=20at >=20org.apache.openjpa.kernel.ExpressionStoreQuery$DataStoreExecutor.(ExpressionStoreQuery.java:728) >=20=20=20=20=20at >=20org.apache.openjpa.kernel.ExpressionStoreQuery.newDataStoreExecutor(E= xpressionStoreQuery.java:170) >=20=20=20=20=20at >=20org.apache.openjpa.kernel.QueryImpl.createExecutor(QueryImpl.java:742= ) >=20=20=20=20=20at >=20org.apache.openjpa.kernel.QueryImpl.compileForDataStore(QueryImpl.jav= a:700) >=20=20=20=20=20at >=20org.apache.openjpa.kernel.QueryImpl.compileForExecutor(QueryImpl.java= :682) >=20=20=20=20=20at=20org.apache.openjpa.kernel.QueryImpl.compile(QueryImp= l.java:582) >=20=20=20=20=20at >=20com.ibm.ws.persistence.EntityManagerImpl.createNamedQuery(EntityManag= erImpl.java:104) >=20=20=20=20=20at >=20com.ibm.ws.persistence.EntityManagerImpl.createNamedQuery(EntityManag= erImpl.java:36) >=20=20=20=20=20at >=20com.ibm.ws.jpa.management.JPATxEmInvocation.createNamedQuery(JPATxEmI= nvocation.java:116) >=20=20=20=20=20at >=20com.ibm.ws.jpa.management.JPAEntityManager.createNamedQuery(JPAEntity= Manager.java:332) >=20=20=20=20=20at=20com.example.DummyDAO.findDummyByProperty(DummyDAO.ja= va:137) >=20=20=20=20=20...=2033=20more >=20 >=20I've=20tweaked=20the=20query=20many=20times,=20but=20am=20unable=20to= =20get=20it=20working.=20I >=20couldn't=20find=20resources=20online=20regarding=20this=20either,=20s= o=20I=20would=20greatly >=20appreciate=20any=20help=20on=20this,=20thank=20you!