title: Is there a Problem with JPA Entities, Oracle 10g and Calendar Type properties?
body: <p>I'm experiencing the following very annoying behaviour when using JPA entitys in conjunction with Oracle 10g. </p>
  
  <p>Suppose you have the following entity.</p>
  
  <pre><code>@Entity
  @Table(name = "T_Order")
  public class TOrder implements Serializable {
      private static final long serialVersionUID = 2235742302377173533L;
  
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private Integer id;
  
      @Column(name = "activationDate")
      private Calendar activationDate;
  
      public Integer getId() {
          return id;
      }
  
      public void setId(Integer id) {
          this.id = id;
      }
  
      public Calendar getActivationDate() {
          return activationDate;
      }
  
      public void setActivationDate(Calendar activationDate) {
          this.activationDate = activationDate;
      }
  }
  </code></pre>
  
  <p>This entity is mapped to Oracle 10g, so in the DB there will be a table <code>T_ORDER</code> with a primary key <code>NUMBER</code> column <code>ID</code> and a <code>TIMESTAMP</code> column <code>activationDate</code>.</p>
  
  <p>Lets suppose I create an instance of this class with the activation date <code>15. Sep 2008 00:00AM</code>. My local timezone is CEST which is <code>GMT+02:00</code>. When I persist this object and select the data from the table <code>T_ORDER</code> using sqlplus, I find out that in the table actually <code>14. Sep 2008 22:00</code> is stored, which is ok so far, because the oracle db timezone is GMT.</p>
  
  <p>But now the annoying part. When I read this entity back into my JAVA program, I find out that the oracle time zone is ignored and I get <code>14. Sep 2008 22:00 CEST</code>, which is definitly wrong. </p>
  
  <p>So basically, when writing to the DB the timezone information will be used, when reading it will be ignored.</p>
  
  <p>Is there any solution for this out there? The most simple solution I guess would be to set the oracle dbs timezone to <code>GMT+02</code>, but unfortunatly I can't do this because there are other applications using the same server.</p>
  
  <p>We use the following technology</p>
  
  <p>MyEclipse 6.5
  JPA with Hibernate 3.2
  Oracle 10g thin JDBC Driver</p>