[
https://issues.apache.org/jira/browse/OPENJPA-1950?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13885233#comment-13885233
]
Vermeulen commented on OPENJPA-1950:
------------------------------------
Today I tried out the jtds driver 1.3.1 instead of the Microsoft driver and
this gives the same type of error for a query that returns a date.
> exception when converting datetime2 result from String to java.util.Date (ms
> sql server)
> -----------------------------------------------------------------------------------------
>
> Key: OPENJPA-1950
> URL: https://issues.apache.org/jira/browse/OPENJPA-1950
> Project: OpenJPA
> Issue Type: Bug
> Components: integration, jdbc, third-party
> Affects Versions: 2.1.0
> Reporter: Vermeulen
> Fix For: 2.1.0
>
> Attachments: OPENJPA-1950-TestCase.zip
>
>
> OPENJPA-1759 (included in OpenJPA 2.1.0) added support for datetime2 in sql
> server. Schema generation uses this type instead of datetime which was
> generated with earlier versions.
> When I have an entity with a java.util.Date column like:
> @Entity
> public class DateTestEntity {
> ...
> @Temporal(TemporalType.DATE)
> private Date date;
> ...
> Performing the following query with expected result type java.util.Date fails
> (also happens with OpenJpa 2.0.0 when there is an existing table column of
> type datetime2).
> "SELECT max(z.date) FROM DateTestEntity z"
> This throws the following exception:
> <openjpa-2.1.0-r422266:1071316 nonfatal user error>
> org.apache.openjpa.persistence.ArgumentException: Failed to execute query
> "SELECT max(z.date) FROM DateTestEntity z". 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 DateTest.findMaxDate(DateTest.java:96)
> at DateTest.testSelectDate(DateTest.java:41)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
> at java.lang.reflect.Method.invoke(Method.java:597)
> at junit.framework.TestCase.runTest(TestCase.java:168)
> at junit.framework.TestCase.runBare(TestCase.java:134)
> at junit.framework.TestResult$1.protect(TestResult.java:110)
> at junit.framework.TestResult.runProtected(TestResult.java:128)
> at junit.framework.TestResult.run(TestResult.java:113)
> at junit.framework.TestCase.run(TestCase.java:124)
> at junit.framework.TestSuite.runTest(TestSuite.java:232)
> at junit.framework.TestSuite.run(TestSuite.java:227)
> at
> org.junit.internal.runners.JUnit38ClassRunner.run(JUnit38ClassRunner.java:79)
> at
> org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:46)
> at
> org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:38)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:467)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
> at
> org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)
> Caused by: java.lang.ClassCastException: Cannot convert object "2011-02-22
> 00:00:00.0000000" of type "class java.lang.String" into an instance of "class
> java.util.Date".
> 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)
> ... 25 more
> What is weird is that the query "SELECT z.date FROM DateTestEntity z" does
> correctly convert to java.util.Date.
--
This message was sent by Atlassian JIRA
(v6.1.5#6160)