Table has NVARCHAR field.
If query on NVARCHAR field has ESCAPE statement and Oracle parameter NLS_NCHAR_CHARACTERSET=UTF8 than query worked correctly.
If query on NVARCHAR field has ESCAPE statement and Oracle parameter NLS_NCHAR_CHARACTERSET=AL16UTF16 than following error raised:
Error executing JDOQL query "SELECT 'org.jpox.test.Probe' AS JPOXMETADATA,THIS.CODE,THIS.ID,THIS."NAME" FROM PROBE THIS WHERE THIS."NAME" LIKE ? ESCAPE '\' " : ORA-01425: escape character must be character string of length 1
java.sql.SQLException: ORA-01425: escape character must be character string of length 1
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:331)
at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:288)
at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:743)
at oracle.jdbc.driver.T4CPreparedStatement.doOall8(T4CPreparedStatement.java:216)
at oracle.jdbc.driver.T4CPreparedStatement.executeForRows(T4CPreparedStatement.java:955)
at oracle.jdbc.driver.OracleStatement.executeMaybeDescribe(OracleStatement.java:1062)
at oracle.jdbc.driver.T4CPreparedStatement.executeMaybeDescribe(T4CPreparedStatement.java:839)
at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1132)
at oracle.jdbc.driver.OraclePreparedStatement.executeInternal(OraclePreparedStatement.java:3285)
at oracle.jdbc.driver.OraclePreparedStatement.executeQuery(OraclePreparedStatement.java:3329)
at org.jpox.store.rdbms.RDBMSManager.executeStatementQuery(RDBMSManager.java:557)
at org.jpox.store.query.JDOQLQuery.performExecute(JDOQLQuery.java:581)
at org.jpox.store.query.Query.executeWithMap(Query.java:1122)
at org.jpox.store.query.Query.executeWithArray(Query.java:1095)
at org.jpox.store.query.Query.execute(Query.java:1031)
at org.jpox.test.Main.main(Main.java:60)
More info
http://www.jpox.org/servlet/forum/viewthread?thread=3716