Hi everyone!

After OpenJPA 2.0.1 -> 2.1.0 upgrade I've got this on PostgreSQL 9.0.4
(x64) with PostgreSQL JDBC driver 9.0-801 (latest stable versions):

250  pf  INFO   [main] openjpa.jdbc.JDBC - Using dictionary class
"org.apache.openjpa.jdbc.sql.PostgresDictionary" (PostgreSQL 9.0.4
,PostgreSQL Native Driver PostgreSQL 9.0 JDBC4 (build 801)).
455  pf  INFO   [main] openjpa.Runtime - Starting OpenJPA 2.1.0
SEVERE: Failed to execute query "select max(h.loadTimestamp) from
Header h where h.code=?1 and h.period=?2". Check the query syntax for
correctness. See nested exception for details.
<openjpa-2.1.0-r422266:1071316 nonfatal user error>
org.apache.openjpa.persistence.ArgumentException: Failed to execute
query "select max(h.loadTimestamp) from Header h where h.code=?1 and
h.period=?2". Check the query syntax for correctness. See nested
exception for details.
        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:872)
        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794)
        at 
org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542)
        at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:305)
        at 
org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:319)
        at 
org.apache.openjpa.persistence.QueryImpl.getSingleResult(QueryImpl.java:343)
        ... my code ...
        at java.lang.Thread.run(Thread.java:662)
Caused by: java.lang.ClassCastException: Cannot convert object
"2011-04-25 15:48:31+02" of type "class org.postgresql.util.PGobject"
into an instance of "class java.sql.Timestamp".
        at org.apache.openjpa.kernel.Filters.convert(Filters.java:336)
        at org.apache.openjpa.kernel.Filters.convert(Filters.java:265)
        at org.apache.openjpa.jdbc.kernel.exps.UnaryOp.load(UnaryOp.java:125)
        at 
org.apache.openjpa.jdbc.kernel.ProjectionResultObjectProvider.getResultObject(ProjectionResultObjectProvider.java:78)
        at 
org.apache.openjpa.kernel.QueryImpl$PackingResultObjectProvider.getResultObject(QueryImpl.java:2075)
        at org.apache.openjpa.kernel.QueryImpl.singleResult(QueryImpl.java:1330)
        at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1242)
        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1007)
        at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:863)
        ... 12 more

Here is the entity:

@Entity
@Table(name = "headers")
@DataCache(enabled = false)
public class Header {
    @Id
    @GeneratedValue
    private long id;

    @Column(nullable = false)
    private String code;

    @Column(nullable = false)
    private int period;

    @Column(nullable = false)
    @Temporal(TemporalType.TIMESTAMP)
    private Timestamp loadTimestamp;
...
}

Configuration:
    <persistence-unit name="pf" transaction-type="RESOURCE_LOCAL">
        
<!--<provider>org.apache.openjpa.persistence.PersistenceProviderImpl</provider>-->

        <class>pkg.Header</class>

        <properties>
            <property name="openjpa.Multithreaded" value="true"/>
            <property name="openjpa.RemoteCommitProvider" value="sjvm"/>
            <property name="openjpa.BrokerImpl"
value="EvictFromDataCache=true"/>
            <property name="openjpa.DataCache"
value="true(CacheSize=10000, SoftReferenceSize=100000)"/>

            <property name="openjpa.jdbc.SynchronizeMappings"
value="buildSchema"/>
            <property name="openjpa.jdbc.MappingDefaults"
                      value="ForeignKeyDeleteAction=restrict,
JoinForeignKeyDeleteAction=restrict"/>
            <!--<property name="openjpa.FetchBatchSize" value="1000"/>-->
            <!--<property name="openjpa.Log"
value="DefaultLevel=INFO,SQL=TRACE"/>-->
        </properties>
    </persistence-unit>

Database schema built automatically with OpenJPA 2.0.1.

Works perfectly in OpenJPA 2.0.1. Regression?

-- 
Stanislav Mironov

Reply via email to