[
https://issues.apache.org/jira/browse/OPENJPA-2259?page=com.atlassian.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
possible to check entities have an Id and emit a more user friendly message ?
> 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
> MaintenanceModule list parameter :
> =========================
> 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 :
> =========================
> TypedQuery<GuidedMaintenance> query =
> em.createNamedQuery("guidedmaintenance.contains.module",
> GuidedMaintenance.class);
> query.setParameter(1, Arrays.asList(modules)); // ModuleMaintenance[]
> modules, white one entity
> We obtains this SQL exception :
> =========================
> Caused by: org.apache.openjpa.lib.jdbc.ReportingSQLException: Syntax error:
> Encountered "NULL" at line 1, column 1369. {SELECT t0.ID, t0.DTYPE,
> t0.ATTRIBUTION, t0.COMPULSORY, t0.DESCRIPTION, t0.FREQUENCY, t0.KEEPORDER,
> t2.ID, t2.LABEL, t0.TITLE, t0.TYPE, t0.WORKABLE, t4.ID, t3.ID, t4.EMAIL,
> t4.ENABLE, t4.NAME, t4.SURNAME, t4.TELEPHONE, t3.ETP, t3.ETPMAINT, t3.LOGIN,
> t3.PASSWORD, t3.QLQLEVEL, t3.QLXLEVEL, t3.STOCKLEVEL, t5.ID, t5.DTYPE,
> t5.ATTRIBUTION, t5.COMPULSORY, t5.DESCRIPTION, t5.FREQUENCY, t5.KEEPORDER,
> t5.TITLE, t5.TYPE, t5.WORKABLE, t5.TOLERANCE, t5.TRACABILITY, t6.ID,
> t6.DTYPE, t6.ATTRIBUTION, t6.COMPULSORY, t6.DESCRIPTION, t6.FREQUENCY,
> t6.KEEPORDER, t6.TITLE, t6.TYPE, t6.WORKABLE, t6.TOLERANCE, t6.TRACABILITY,
> t0.TOLERANCE, t0.TRACABILITY FROM "CMP-MAINT".MAINTENANCES t0 LEFT OUTER JOIN
> "CMP-MAINT".MAINTENANCES_MODULEMAINTENANCES t1 ON t0.ID = t1.MAINTENANCE_ID
> LEFT OUTER JOIN QUALINAX.ROLES t2 ON t0.REQUIRED_ID = t2.ID INNER JOIN
> QUALINAX.INTERNALUSERS t3 ON t0.EDITOR_ID = t3.ID LEFT OUTER JOIN
> "CMP-MAINT".MAINTENANCES t5 ON t0.ID = t5.PREVIOUS_ID LEFT OUTER JOIN
> "CMP-MAINT".MAINTENANCES t6 ON t0.PREVIOUS_ID = t6.ID INNER JOIN
> QUALINAX.USERS t4 ON t3.ID = t4.ID WHERE (t0.PREVIOUS_ID IS NULL AND 0 =
> (SELECT COUNT(*) FROM "CMP-MAINT".MAINTENANCES WHERE
> "CMP-MAINT".MAINTENANCES.PREVIOUS_ID = t0.ID) OR t0.PREVIOUS_ID IS NOT NULL
> AND 0 = (SELECT COUNT(*) FROM "CMP-MAINT".MAINTENANCES WHERE
> "CMP-MAINT".MAINTENANCES.PREVIOUS_ID = t0.ID) AND t1.MODULES_ID IN (NULL))
> AND t0.DTYPE = ? AND (t5.DTYPE IS NULL OR t5.DTYPE IN (?)) AND (t6.DTYPE IS
> NULL OR t6.DTYPE IN (?))} [code=30000, state=42X01]
> I think it's a bug because our modules list isn't empty and we obtains SQL
> statement "t1.MODULES_ID IN (NULL)".
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira