[ https://issues.apache.org/jira/browse/OPENJPA-497?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Pinaki Poddar resolved OPENJPA-497. ----------------------------------- Resolution: Fixed Fix Version/s: 1.3.0 > 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 > Assignee: Pinaki Poddar > Priority: Minor > Fix For: 1.3.0 > > 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.