EJB-QL query on a Collection field error
ntone606 Mar 6, 2003 12:51 PMHi all,
I have a CMP 2.0 entity, with a users Collection field, (A collection of string names). I've defined an ejb-ql query:
SELECT DISTINCT OBJECT(o) FROM CommunityInfo AS o, IN (o.users) AS u WHERE ?1 MEMBER OF u
This is using range variable syntax for the collection field as detailed at http://www.ejb-ql.com/ejb-ql.html#RangeVariable. However, this is causing a deployment error. The error says that a collection is expected at o.users, yet this is a Collection CMP field in the entity. Could there be anything I'm missing or should the syntax be slightly different for JBoss?
Any help would be warmly appreciated!
Thanks,
Steven
<query-method>
<method-name>findByUser</method-name>
<method-params>
<method-param>java.lang.String</method-param>
</method-params>
</query-method>
<result-type-mapping>Local</result-type-mapping>
<ejb-ql><![CDATA[SELECT DISTINCT OBJECT(o) FROM CommunityInfo AS o, IN (o.users) AS u WHERE ?1 MEMBER OF u]]>
</ejb-ql>
17:58:31,838 WARN [ServiceController] Problem starting service jboss.j2ee:jndiN
ame=ejb/CommunityInfo,service=EJB
org.jboss.deployment.DeploymentException: Error compiling ejbql; - nested throwa
ble: (org.jboss.ejb.plugins.cmp.ejbql.ParseException: Encountered "o.users" at l
ine 1, column 55.
Was expecting:
<COLLECTION_VALUED_PATH> ...
)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.(JDBCEJBQLQuery.j
ava:46)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCCommandFactory.createEJBQLQuery(JD
BCCommandFactory.java:44)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCQueryManager.start(JDBCQueryManage
r.java:218)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.startStoreManager(JDB
CStoreManager.java:463)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCStoreManager.start(JDBCStoreManage
r.java:369)
at org.jboss.ejb.plugins.CMPPersistenceManager.start(CMPPersistenceManag
er.java:198)
at org.jboss.ejb.EntityContainer.start(EntityContainer.java:376)
at org.jboss.ejb.Container.invoke(Container.java:756)
at org.jboss.ejb.EntityContainer.invoke(EntityContainer.java:1058)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceControl
ler.java:1003)
at $Proxy4.start(Unknown Source)
at org.jboss.system.ServiceController.start(ServiceController.java:413)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea
nDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
at $Proxy151.start(Unknown Source)
at org.jboss.ejb.EjbModule.startService(EjbModule.java:430)
at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:1
65)
at sun.reflect.GeneratedMethodAccessor31.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea
nDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceControl
ler.java:1003)
at $Proxy4.start(Unknown Source)
at org.jboss.system.ServiceController.start(ServiceController.java:413)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea
nDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
at $Proxy10.start(Unknown Source)
at org.jboss.ejb.EJBDeployer.start(EJBDeployer.java:395)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:814)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:806)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:627)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:591)
at sun.reflect.GeneratedMethodAccessor9.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea
nDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
at $Proxy3.deploy(Unknown Source)
at org.jboss.deployment.scanner.URLDeploymentScanner.deploy(URLDeploymen
tScanner.java:435)
at org.jboss.deployment.scanner.URLDeploymentScanner.scanDirectory(URLDe
ploymentScanner.java:656)
at org.jboss.deployment.scanner.URLDeploymentScanner.scan(URLDeploymentS
canner.java:507)
at org.jboss.deployment.scanner.AbstractDeploymentScanner.startService(A
bstractDeploymentScanner.java:261)
at org.jboss.system.ServiceMBeanSupport.start(ServiceMBeanSupport.java:1
65)
at sun.reflect.GeneratedMethodAccessor4.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea
nDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.system.ServiceController$ServiceProxy.invoke(ServiceControl
ler.java:1003)
at $Proxy0.start(Unknown Source)
at org.jboss.system.ServiceController.start(ServiceController.java:413)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea
nDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.util.jmx.MBeanProxy.invoke(MBeanProxy.java:174)
at $Proxy2.start(Unknown Source)
at org.jboss.deployment.SARDeployer.start(SARDeployer.java:230)
at org.jboss.deployment.MainDeployer.start(MainDeployer.java:814)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:627)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:591)
at org.jboss.deployment.MainDeployer.deploy(MainDeployer.java:575)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.
java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAcces
sorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:324)
at org.jboss.mx.capability.ReflectedMBeanDispatcher.invoke(ReflectedMBea
nDispatcher.java:284)
at org.jboss.mx.server.MBeanServerImpl.invoke(MBeanServerImpl.java:517)
at org.jboss.system.server.ServerImpl.doStart(ServerImpl.java:325)
at org.jboss.system.server.ServerImpl.start(ServerImpl.java:222)
at org.jboss.Main.boot(Main.java:148)
at org.jboss.Main$1.run(Main.java:381)
at java.lang.Thread.run(Thread.java:536)
Caused by: org.jboss.ejb.plugins.cmp.ejbql.ParseException: Encountered "o.users"
at line 1, column 55.
Was expecting:
<COLLECTION_VALUED_PATH> ...
at org.jboss.ejb.plugins.cmp.ejbql.EJBQLParser.generateParseException(EJ
BQLParser.java:3745)
at org.jboss.ejb.plugins.cmp.ejbql.EJBQLParser.jj_consume_token(EJBQLPar
ser.java:3626)
at org.jboss.ejb.plugins.cmp.ejbql.EJBQLParser.CollectionValuedPath(EJBQ
LParser.java:1754)
at org.jboss.ejb.plugins.cmp.ejbql.EJBQLParser.CollectionMemberDeclarati
on(EJBQLParser.java:226)
at org.jboss.ejb.plugins.cmp.ejbql.EJBQLParser.IdentificationVariableDec
laration(EJBQLParser.java:205)
at org.jboss.ejb.plugins.cmp.ejbql.EJBQLParser.FromClause(EJBQLParser.ja
va:175)
at org.jboss.ejb.plugins.cmp.ejbql.EJBQLParser.ParseFromClause(EJBQLPars
er.java:150)
at org.jboss.ejb.plugins.cmp.ejbql.EJBQLParser.parse(EJBQLParser.java:56
)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLCompiler.compileEJBQL(JDBCEJB
QLCompiler.java:144)
at org.jboss.ejb.plugins.cmp.jdbc.JDBCEJBQLQuery.(JDBCEJBQLQuery.j
ava:40)
... 84 more