Return-Path: X-Original-To: apmail-openjpa-dev-archive@www.apache.org Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 819E5DD0F for ; Thu, 6 Sep 2012 09:06:09 +0000 (UTC) Received: (qmail 86909 invoked by uid 500); 6 Sep 2012 09:06:09 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 86796 invoked by uid 500); 6 Sep 2012 09:06:08 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 86766 invoked by uid 99); 6 Sep 2012 09:06:07 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Thu, 06 Sep 2012 09:06:07 +0000 Date: Thu, 6 Sep 2012 20:06:07 +1100 (NCT) From: "Guillaume Chauvet (JIRA)" To: dev@openjpa.apache.org Message-ID: <1563193230.43634.1346922367673.JavaMail.jiratomcat@arcas> In-Reply-To: <1284904103.43582.1346920627577.JavaMail.jiratomcat@arcas> Subject: [jira] [Updated] (OPENJPA-2259) SQL generation error for the JPQL IN statement MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/OPENJPA-2259?page=3Dcom.atlass= ian.jira.plugin.system.issuetabpanels:all-tabpanel ] Guillaume Chauvet updated OPENJPA-2259: --------------------------------------- Priority: Minor (was: Major) Issue Type: Improvement (was: Bug) Well it's not a bug, but more a message issue : I obtained NULL because my = MaintenanceModule entites are not persisted : they don't have id. Is it pos= sible to check entities have an Id and emit a more user friendly message ? =20 > SQL generation error for the JPQL IN statement > ---------------------------------------------- > > Key: OPENJPA-2259 > URL: https://issues.apache.org/jira/browse/OPENJPA-2259 > Project: OpenJPA > Issue Type: Improvement > Components: query, sql > Affects Versions: 2.2.0 > Reporter: Guillaume Chauvet > Priority: Minor > > Dear OpenJPA Team, > We have created a JPQL query for finding all (newest) "GuidedMaintenance"= entity who contains at least one "MaintenanceModule" entity from a Mainten= anceModule list parameter : > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D > SELECT M FROM GUIDEDMAINTENANCE AS M WHERE (M.previous IS NULL AND M.next= IS NULL) OR (M.previous IS NOT NULL AND M.next IS NULL) AND M.modules IN (= ?1) > The Java query snippet : > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D > TypedQuery query =3D em.createNamedQuery("guidedmainte= nance.contains.module", GuidedMaintenance.class); > query.setParameter(1, Arrays.asList(modules));=09// ModuleMaintenance[] m= odules, white one entity > We obtains this SQL exception : > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D > Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Syntax erro= r: Encountered "NULL" at line 1, column 1369. {SELECT t0.ID, t0.DTYPE, t0.A= TTRIBUTION, t0.COMPULSORY, t0.DESCRIPTION, t0.FREQUENCY, t0.KEEPORDER, t2.I= D, t2.LABEL, t0.TITLE, t0.TYPE, t0.WORKABLE, t4.ID, t3.ID, t4.EMAIL, t4.ENA= BLE, t4.NAME, t4.SURNAME, t4.TELEPHONE, t3.ETP, t3.ETPMAINT, t3.LOGIN, t3.P= ASSWORD, t3.QLQLEVEL, t3.QLXLEVEL, t3.STOCKLEVEL, t5.ID, t5.DTYPE, t5.ATTRI= BUTION, t5.COMPULSORY, t5.DESCRIPTION, t5.FREQUENCY, t5.KEEPORDER, t5.TITLE= , t5.TYPE, t5.WORKABLE, t5.TOLERANCE, t5.TRACABILITY, t6.ID, t6.DTYPE, t6.A= TTRIBUTION, t6.COMPULSORY, t6.DESCRIPTION, t6.FREQUENCY, t6.KEEPORDER, t6.T= ITLE, t6.TYPE, t6.WORKABLE, t6.TOLERANCE, t6.TRACABILITY, t0.TOLERANCE, t0.= TRACABILITY FROM "CMP-MAINT".MAINTENANCES t0 LEFT OUTER JOIN "CMP-MAINT".MA= INTENANCES_MODULEMAINTENANCES t1 ON t0.ID =3D t1.MAINTENANCE_ID LEFT OUTER = JOIN QUALINAX.ROLES t2 ON t0.REQUIRED_ID =3D t2.ID INNER JOIN QUALINAX.INTE= RNALUSERS t3 ON t0.EDITOR_ID =3D t3.ID LEFT OUTER JOIN "CMP-MAINT".MAINTENA= NCES t5 ON t0.ID =3D t5.PREVIOUS_ID LEFT OUTER JOIN "CMP-MAINT".MAINTENANCE= S t6 ON t0.PREVIOUS_ID =3D t6.ID INNER JOIN QUALINAX.USERS t4 ON t3.ID =3D = t4.ID WHERE (t0.PREVIOUS_ID IS NULL AND 0 =3D (SELECT COUNT(*) FROM "CMP-MA= INT".MAINTENANCES WHERE "CMP-MAINT".MAINTENANCES.PREVIOUS_ID =3D t0.ID) OR = t0.PREVIOUS_ID IS NOT NULL AND 0 =3D (SELECT COUNT(*) FROM "CMP-MAINT".MAIN= TENANCES WHERE "CMP-MAINT".MAINTENANCES.PREVIOUS_ID =3D t0.ID) AND t1.MODUL= ES_ID IN (NULL)) AND t0.DTYPE =3D ? AND (t5.DTYPE IS NULL OR t5.DTYPE IN (?= )) AND (t6.DTYPE IS NULL OR t6.DTYPE IN (?))} [code=3D30000, state=3D42X01] > I think it's a bug because our modules list isn't empty and we obtains SQ= L statement "t1.MODULES_ID IN (NULL)". -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrato= rs For more information on JIRA, see: http://www.atlassian.com/software/jira