Return-Path: Delivered-To: apmail-openjpa-dev-archive@www.apache.org Received: (qmail 77691 invoked from network); 10 Mar 2009 17:33:16 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 10 Mar 2009 17:33:16 -0000 Received: (qmail 37781 invoked by uid 500); 10 Mar 2009 17:33:14 -0000 Delivered-To: apmail-openjpa-dev-archive@openjpa.apache.org Received: (qmail 37761 invoked by uid 500); 10 Mar 2009 17:33:14 -0000 Mailing-List: contact dev-help@openjpa.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@openjpa.apache.org Delivered-To: mailing list dev@openjpa.apache.org Received: (qmail 37733 invoked by uid 99); 10 Mar 2009 17:33:14 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 10 Mar 2009 10:33:14 -0700 X-ASF-Spam-Status: No, hits=-2000.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.140] (HELO brutus.apache.org) (140.211.11.140) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 10 Mar 2009 17:33:11 +0000 Received: from brutus (localhost [127.0.0.1]) by brutus.apache.org (Postfix) with ESMTP id 7AB43234C051 for ; Tue, 10 Mar 2009 10:32:50 -0700 (PDT) Message-ID: <1195469026.1236706370501.JavaMail.jira@brutus> Date: Tue, 10 Mar 2009 10:32:50 -0700 (PDT) From: "Adam Hardy (JIRA)" To: dev@openjpa.apache.org Subject: [jira] Created: (OPENJPA-971) Time handling in Dates MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 X-Virus-Checked: Checked by ClamAV on apache.org Time handling in Dates ---------------------- Key: OPENJPA-971 URL: https://issues.apache.org/jira/browse/OPENJPA-971 Project: OpenJPA Issue Type: Bug Affects Versions: 1.2.0 Environment: Linux Java 1.6.0_12 MySQL, Hypersonic Reporter: Adam Hardy I have what looks like a bug in time handling, that probably stems from the database Dictionaries. My testing shows it occurs with MySQL and Derby, but not for PostgreSQL, H2 or Hypersonic (using latest GA versions of Java, OpenJPA & JDBC drivers). If I save an entity with this set-up, I see incorrect handling of dates: class MyEntity { ... private java.util.Date opening; ... } and: TIME ... and: create table MY_ENTITY ( ... OPENING time not null, ... In my test I assign a new value to 'opening', save the entity and retrieve it from the database again. Then I compare the date on the retrieved entity against the value originally assigned, and I get this result: with Derby: original Calendar.HOUR_OF_DAY == 9, retrieved value = 10 (probably due to Daylight Saving Time handling) with MySQL: original Calendar.YEAR == 1970, retrieved value = 1969 With MySQL it could be declared irrelevant since the value comes from a Time database type and the Java comparisons should blank out or ignore non-time Date values. However the MySQLDictionary refuses to read in Times in the HH:MM:SS format when zero 00:00:00 - it causes the following exception: org.apache.openjpa.persistence.PersistenceException: Cannot convert value '00:00:00' from column 9 to TIMESTAMP. at org.apache.openjpa.jdbc.sql.DBDictionary.narrow(DBDictionary.java:4238) at org.apache.openjpa.jdbc.sql.DBDictionary.newStoreException(DBDictionary.java:4203) at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:102) at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:88) at org.apache.openjpa.jdbc.sql.SQLExceptions.getStore(SQLExceptions.java:64) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:282) at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:111) at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57) at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:894) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:852) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:774) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:917) at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:278) at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2391) at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:272) at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59) at org.apache.openjpa.kernel.QueryImpl.singleResult(QueryImpl.java:1294) at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1221) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:990) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:805) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:775) at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:533) at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:251) at org.apache.openjpa.persistence.QueryImpl.getSingleResult(QueryImpl.java:316) -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.