[ https://issues.apache.org/jira/browse/OPENJPA-1914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12977604#action_12977604 ]
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. Regards, Jai (JaiKumar Kochi Rammohan) Global Ledger User Interface (GLUI) Team, IGA US Finance, IBM India Pvt Ltd, DC7-3-049, Blk 7, DLF IT Park, 3rd Flr, 1/124, Sivaji Gardens, Moonlight Stop, Nandambakkam Post, Ramapuram, Chennai - 600 089, Tamilnadu, India. Work : +91-44-22723586 Board : +91-44-22720000 X 3586 TieLine/VOIP: +92 67568, Mobile: +91-9840820310 email:jaikumar...@in.ibm.com "Fay Wang (JIRA)" <j...@apache.org> 04/01/2011 23:56 To Jaikumar K Rammohan/India/i...@ibmin cc Subject [jira] Commented: (OPENJPA-1914) Issue with OpenJPA 1.2.1 while using subquery. [ https://issues.apache.org/jira/browse/OPENJPA-1914?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12977392#action_12977392 ] Fay Wang commented on OPENJPA-1914: ----------------------------------- According to the spec, the BNF of the in_expression, subquery are: in_expression ::= state_field_path_expression [NOT] IN ( in_item {, in_item}* | subquery) subquery ::= simple_select_clause subquery_from_clause [where_clause][groupby_clause] [having_clause] simple_select_clause ::= SELECT [DISTINCT] simple_select_expression As can be seen from the BNF, the LHS of the in_expression can be one and only one path expression and the subquery can select one and only one expression or variable. The where clause in your JPQL, therefore, is incorrect: 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)"; system. Working from standalone java program. using log4j-1.2.14.jar and geronimo-jpa_3.0_spec-1.0.jar 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)"; 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. > 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.