Hi I need to persist all timestamps in UTC timezone. I found this documentation which talks about using Calendar by setting the timezone value to the desired timezone (http://openjpa.apache.org/builds/1.1.0/apache-openjpa-1.1.0/docs/manual/ref_guide_pc_scos.html#ref_guide_pc_calendar_timezone), plus this JIRA (https://issues.apache.org/jira/browse/OPENJPA-322) that gives me some idea on how I can initialize Calendar to insert/update time in UTC but nothing has worked so far. The timestamps are always entered and read in DB local timezone (PDT). I noticed that the Calendar timezone of the retrieved object is set correctly to UTC, however, the time is still in local timezone (PDT). I also noticed that the retrieved object has JPA implementation of the Calendar object: org.apache.openjpa.util.java$util$GregorianCalendar$proxy.
We are using openJPA version 1.1.0. I am copying my artifacts below. The test class has two timestamp fields, one is for UTC timezone and the other one is for local timezone to show that both values are same. Please let me know if any other information can help understand this problem better. Any help on this matter will be greatly appreciated. --------------------------------------------------------- TestDate table: CREATE TABLE DATETEST ( ID VARCHAR(255) NOT NULL, CREATEDTIME TIMESTAMP, STARTTIME TIMESTAMP) ---------------------------------------------------------- ---------------------------------------------------------- JPA class: ---------------------------------------------------------- package com.my.package.entity; import java.io.Serializable; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import javax.persistence.*; @Entity @Table(name="DATETEST") public class DateTest implements Serializable { @Id @Column(name="ID") private String id; @Temporal(TemporalType.TIMESTAMP) @Column(name="CREATEDTIME") private Calendar createdTime = Calendar.getInstance(TimeZone.getTimeZone("UTC")); @Temporal(TemporalType.TIMESTAMP) @Column(name="STARTTIME") private Date startTime; public Calendar getCreatedTime() { return createdTime; } public void setCreatedTime(Calendar createdTime) { this.createdTime = createdTime; } public Date getStartTime() { return startTime; } public void setStartTime(Date startTime) { this.startTime = startTime; } public String getId() { return id; } public void setId(String id) { this.id = id; } } ---------------------------------------------------------- ---------------------------------------------------------- JUnit test: ---------------------------------------------------------- @Test public void testDate() { DateTest dt = new DateTest(); dt.setId(id); dt.setCreatedTime(Calendar.getInstance(TimeZone.getTimeZone("UTC"))); dt.setStartTime(new Date()); try { //persist } catch (Exception e) { fail(e.getMessage()); } // Check result DateTest returned = null; try { returned = //find by id; Calendar createdTimeC = returned.getCreatedTime(); System.out.println("createdTime type : " + createdTimeC.getClass().getName()); System.out.println("createdTime timezone: " + createdTimeC.getTimeZone()); System.out.println("Created time : " + createdTimeC.getTime()); System.out.println("Start time : " + returned.getStartTime()); System.out.println("Created time (millisecs): " + createdTimeC.getTimeInMillis()); System.out.println("Start time (millisecs) : " + returned.getStartTime().getTime()); } catch (Exception e) { fail(e.getMessage()); } } ---------------------------------------------------------- The output is: createdTime type : org.apache.openjpa.util.java$util$GregorianCalendar$proxy createdTime timezone: sun.util.calendar.ZoneInfo[id="UTC",offset=0,dstSavings=0,useDaylight=false,transitions=0,lastRule=null] Created time : Tue Mar 17 09:40:39 PDT 2009 Start time : Tue Mar 17 09:40:39 PDT 2009 Created time (millisecs): 1237308039662 Start time (millisecs) : 1237308039662 ---------------------------------------------------------- And the DB entry shows: db2> select * from DATETEST ID CREATEDTIME STARTTIME --------------- ---------------------------------- ------------------------------------- utc_test1 2009-03-16-16.14.32.380000 2009-03-16-16.14.32.380000 1 record(s) selected. db2> -- View this message in context: http://n2.nabble.com/How-do-I-persist-timestamp-in-UTC-timezone--tp2492546p2492546.html Sent from the OpenJPA Users mailing list archive at Nabble.com.