You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@openjpa.apache.org by "Craig Russell (JIRA)" <ji...@apache.org> on 2008/01/21 21:14:35 UTC
[jira] Updated: (OPENJPA-497) Incorect handling of temporal
parameters in queries
[ https://issues.apache.org/jira/browse/OPENJPA-497?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Craig Russell updated OPENJPA-497:
----------------------------------
Attachment: openjpa-497.patch
Please review this patch.
I don't know if the conversion method belongs here or in a different utility class.
The specification is unclear as to what the appropriate conversions should be, but what's done here seems to be consistent with what other implementations do.
I haven't written any tests to check for correctness. Where should the tests go?
> Incorect handling of temporal parameters in queries
> ---------------------------------------------------
>
> Key: OPENJPA-497
> URL: https://issues.apache.org/jira/browse/OPENJPA-497
> Project: OpenJPA
> Issue Type: Bug
> Affects Versions: 1.0.1
> Environment: Java 1.6
> Glassfish v2
> openjpa-1.0.1-r420667
> Reporter: Mircea Lazar
> Priority: Minor
> Attachments: openjpa-497.patch
>
>
> The entity:
> For an entity:
> @Entity
> class Log{
> protected Timestamp startTime;
> }
> given the query
> SELECT al FROM Log al WHERE al.startTime BETWEEN :start AND :end ORDER BY al.id ASC
> If the query is used as:
> query.setParameter("start", start, TemporalType.TIMESTAMP);
> query.setParameter("end", end, TemporalType.TIMESTAMP);
> where start and end are of type java.util.Date, an exception will be thrown:
> org.apache.openjpa.persistence.ArgumentException: The parameter
> "start" is of type "java.util.Date", but the declaration in the query
> is for type "java.sql.Timestamp".
> at org.apache.openjpa.persistence.QueryImpl.validateParameter(QueryImpl.java:270)
> at org.apache.openjpa.persistence.QueryImpl.validateParameters(QueryImpl.java:257)
> OpenJPA appears to ignore the temporal indications in setParameter because QueryImpl is as this:
> public OpenJPAQuery setParameter(int position, Date value,
> TemporalType type) {
> return setParameter(position, value);
> }
> The Date parameter should be converted to Timestamp inside setParameter method.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.