With SQLTemplate, you must bind parameters using #bind directive. See http://cayenne.apache.org/doc/scripting-sqltemplate.html
2010/3/3 Sudheer <[email protected]> > > Query (computer_list) kept in datamap > --------------- > Select distinct cdh.dis_hw_uuid as id, > cdh.label as label, > 'computer' as col1, > ccd.class_name as col2, > cag.ip_address as col3, > cdh.vendor_name as col4, > cdh.class_id as state > > from xxx_discovered_hardware cdh left outer join xxx_class_def ccd on > ccd.class_id = cdh.class_id, > xxx_agent cag, xxx_n_tier dom > > where cdh.domain_uuid = dom.domain_uuid and cag.object_uuid = > cdh.dis_hw_uuid and cdh.label like $myParam > > Code for invocation > ------------------ > SQLTemplate query = (SQLTemplate) > context.getEntityResolver().lookupQuery("computer_list"); > HashMap input = new HashMap(); > input.put("myParam", "ag15"); > query.queryWithParameters(input); > > //NamedQuery query = new NamedQuery("computerlist", input); > List objects = context.performQuery(query); > > Log file after run > ---------------- > INFO: --- transaction started. > 3/03/2010 15:59:49 org.apache.cayenne.access.QueryLogger logQuery > INFO: Select distinct cdh.dis_hw_uuid as id, cdh.label as > label, 'computer' as col1, ccd.class_name as col2, > cag.ip_address as col3, cdh.vendor_name as col4, > cdh.class_id as state from ca_discovered_hardware cdh left > outer join xxx_class_def ccd on ccd.class_id = cdh.class_id, > xxx_agent cag, xxx_n_tier dom where cdh.domain_uuid = > dom.domain_uuid > and cag.object_uuid = cdh.dis_hw_uuid and cdh.label like $myParam > 3/03/2010 15:59:49 org.apache.cayenne.access.QueryLogger logQueryError > INFO: *** error. > com.microsoft.sqlserver.jdbc.SQLServerException: Invalid pseudocolumn > "$myParam". > at > > com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDatabaseError(Unknown > Source) > at com.microsoft.sqlserver.jdbc.IOBuffer.processPackets(Unknown > Source) > at > > com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.getPrepExecResponse(Unknown > Source) > at > > com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.doExecutePreparedStatement(Unknown > Source) > at > > com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement$PreparedStatementExecutionRequest.executeStatement(Unknown > Source) > at com.microsoft.sqlserver.jdbc.CancelableRequest.execute(Unknown > Source) > at > com.microsoft.sqlserver.jdbc.SQLServerConnection.executeRequest(Unknown > Source) > at > com.microsoft.sqlserver.jdbc.SQLServerPreparedStatement.execute(Unknown > Source) > at > > org.apache.cayenne.access.jdbc.SQLTemplateAction.execute(SQLTemplateAction.java:160) > at > > org.apache.cayenne.access.jdbc.SQLTemplateAction.performAction(SQLTemplateAction.java:134) > at > > org.apache.cayenne.access.DataNodeQueryAction.runQuery(DataNodeQueryAction.java:87) > at > org.apache.cayenne.access.DataNode.performQueries(DataNode.java:269) > at > > org.apache.cayenne.access.DataDomainQueryAction.runQuery(DataDomainQueryAction.java:422) > at > > org.apache.cayenne.access.DataDomainQueryAction.access$000(DataDomainQueryAction.java:69) > at > > org.apache.cayenne.access.DataDomainQueryAction$2.transform(DataDomainQueryAction.java:395) > at > org.apache.cayenne.access.DataDomain.runInTransaction(DataDomain.java:850) > at > > org.apache.cayenne.access.DataDomainQueryAction.runQueryInTransaction(DataDomainQueryAction.java:392) > at > > org.apache.cayenne.access.DataDomainQueryAction.execute(DataDomainQueryAction.java:121) > at org.apache.cayenne.access.DataDomain.onQuery(DataDomain.java:743) > at > > org.apache.cayenne.util.ObjectContextQueryAction.runQuery(ObjectContextQueryAction.java:333) > at > > org.apache.cayenne.util.ObjectContextQueryAction.execute(ObjectContextQueryAction.java:96) > at > org.apache.cayenne.access.DataContext.onQuery(DataContext.java:1278) > at > org.apache.cayenne.access.DataContext.performQuery(DataContext.java:1267) > at Main.main(Main.java:85) > > Is there anything wrong I did? > -- > View this message in context: > http://n3.nabble.com/Named-query-not-working-with-parameters-tp425935p425935.html > Sent from the Cayenne - User mailing list archive at Nabble.com. > -- Andrey
