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.