cayenne-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Andrus Adamchik <and...@objectstyle.org>
Subject Re: likeIgnoreCaseDbExp syntax error in 3.0.1
Date Wed, 19 Jan 2011 07:49:51 GMT
Hi Li,

Looks like a bug to me. Could you please open a bug report in Jira ( https://issues.apache.org/jira/browse/CAY
), providing the information below, and maybe also a specific piece of Java code that causes
this error.

Thanks,
Andrus

On Jan 19, 2011, at 1:03 AM, Li Zhou wrote:

> 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
View raw message