[ https://issues.apache.org/jira/browse/OPENJPA-1914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12977605#action_12977605 ]
JaiKumar commented on OPENJPA-1914: ----------------------------------- Thanks for the response, I understand from your statement that only one column can be used in Left hand side of NOT IN operator. And two columns cannot be supported as in original query. i.e, WHERE (jrNbr.countryCode) NOT IN (SELECT vNbr.countryCode FROM VoucherNumber vNbr,Country ctyEntity WHERE vNbr.countryCode = ctyEntity.cty AND ctyEntity.cln_identity=:clnIdentity)"; However the whole idea of using two columns on LHS of NOT IN operator came to me since its supported in DB2 Database with Native sql, for which OpenJPA ver 1.2.1 was failing .. Even its supported by most of other DB like oracle, sqlserver etc. and as well. Using a single table column will not provide similar results when you want to check two column data against single record. Native SQL which will work in client tools for most of database are provided below. UPDATE VITSCM.VITTBGE jnbr SET jnbr.updated_on=:updatedOn WHERE (jnbr.cty,jnbr.src) NOT IN(SELECT a.cty,a.src FROM VITSCF.CFLTBGE a,VITSCM.VITTCTY b WHERE a.cty = b.cty AND b.cln_identity=:clnIdentity) Please provide an alternative for this. > Issue with OpenJPA 1.2.1 while using subquery. > ---------------------------------------------- > > Key: OPENJPA-1914 > URL: https://issues.apache.org/jira/browse/OPENJPA-1914 > Project: OpenJPA > Issue Type: Bug > Affects Versions: 1.2.1 > Environment: Database server = DB2 z/OS 9.1.5 in AIX system. > Working from standalone java program. using log4j-1.2.14.jar and > geronimo-jpa_3.0_spec-1.0.jar > Reporter: JaiKumar > > On using below code to update an JournalNumber entity .. > tx = entityManager.getTransaction(); > tx.begin(); > System.out.println("...Clone :" + cloneId); > String query = "UPDATE JournalNumber jrNbr SET > jrNbr.updated_on=:updatedOn WHERE (jrNbr.countryCode,jrNbr.sourceCode) NOT > IN(SELECT vNbr.countryCode,vNbr.sourceCode FROM VoucherNumber vNbr,Country > ctyEntity WHERE vNbr.countryCode = ctyEntity.cty AND > ctyEntity.cln_identity=:clnIdentity)"; > Query q = entityManager.createQuery(query); > q.setParameter("updatedOn", new Date()); > q.setParameter("clnIdentity", cloneId); > q.executeUpdate(); > tx.commit(); > I get below error .. > <openjpa-1.2.1-r752877:753278 nonfatal user error> > org.apache.openjpa.persistence.ArgumentException: Encountered "jrNbr . > countryCode ," at character 67, but expected: ["(", ")", "*", "+", "-", ".", > "/", ":", "<", "<=", "<>", "=", ">", ">=", "?", "ABS", "ALL", "AND", "ANY", > "AS", "ASC", "AVG", "BETWEEN", "BOTH", "BY", "CONCAT", "COUNT", > "CURRENT_DATE", "CURRENT_TIME", "CURRENT_TIMESTAMP", "DELETE", "DESC", > "DISTINCT", "EMPTY", "ESCAPE", "EXISTS", "FETCH", "FROM", "GROUP", "HAVING", > "IN", "INNER", "IS", "JOIN", "LEADING", "LEFT", "LENGTH", "LIKE", "LOCATE", > "LOWER", "MAX", "MEMBER", "MIN", "MOD", "NEW", "NOT", "NULL", "OBJECT", "OF", > "OR", "ORDER", "OUTER", "SELECT", "SET", "SIZE", "SOME", "SQRT", "SUBSTRING", > "SUM", "TRAILING", "TRIM", "UPDATE", "UPPER", "WHERE", <DECIMAL_LITERAL>, > <IDENTIFIER>, <INTEGER_LITERAL>, <STRING_LITERAL>]. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.