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


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.

Reply via email to