cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Li Zhou <lz...@smausa.com>
Subject likeIgnoreCaseDbExp syntax error in 3.0.1
Date Tue, 18 Jan 2011 23:03:32 GMT
Hi, All
  I am encountering an issue with below Expression method in Cayenne 3.0.1
stable version.

likeIgnoreCaseDbExp(String pathSpec, Object value, char escapeChar)
          A convenience shortcut for building LIKE_IGNORE_CASE expression.

The error message is below.

SELECT * FROM TEST_TABLE t0 WHERE UPPER(t0.NAME) LIKE UPPER(? {escape '*'})
[bind: 1->NAME:'A*_1']

java.sql.SQLException: *Incorrect syntax near the keyword 'escape'.*
    at
net.sourceforge.jtds.jdbc.SQLDiagnostic.addDiagnostic(SQLDiagnostic.java:368)
    at net.sourceforge.jtds.jdbc.TdsCore.tdsErrorToken(TdsCore.java:2820)
    at net.sourceforge.jtds.jdbc.TdsCore.nextToken(TdsCore.java:2258)
    at net.sourceforge.jtds.jdbc.TdsCore.getMoreResults(TdsCore.java:632)
    at
net.sourceforge.jtds.jdbc.JtdsStatement.executeSQLQuery(JtdsStatement.java:477)
    at
net.sourceforge.jtds.jdbc.JtdsPreparedStatement.executeQuery(JtdsPreparedStatement.java:776)
    at
org.apache.cayenne.access.jdbc.SelectAction.performAction(SelectAction.java:71)
    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)


If I am not mistaken,   the parenthesis position in the generated SQL query
is not right. It should be put  near the question mark instead of the last
position like below:

SELECT * FROM TEST_TABLE t0 WHERE UPPER(t0.NAME) LIKE UPPER(?) {escape '*'}
The question mark binding value is 'A*_1'


Did any one encounter the same issue ?

Thanks,

Li

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message