@Temporal (TemporalType.DATE) с Oracle 12

В нашей БД у нас есть несколько объектов с полями Date. Oracle видит каждую дату как одну и ту же, с датой и частью времени. Однако сущности JPA различаются с помощью аннотации @Temporal. Когда мы хотим пропустить часть времени, мы аннотируем поля Date с помощью @Temporal (TemporalType.DATE), а Oracle сохраняет 00:00:00, если нет, мы просто оставляем это без аннотации.

Пример:

@Entity
public class MyEntity implements Serializable {
  private static final long serialVersionUID = 1L;

  @Id
  private long myentityId;

  @Temporal(TemporalType.DATE)
  private Date importantDate; //01.01.2015 00:00:00

  private Date creationDate; //01.01.2015 10:35:51
  ...
}

...
MyEntity me = new MyEntity();
me.setImportantDate(new Date());
me.setCreationDate(new Date());
...

Мы обновили с Oracle 11 до Oracle 12 и теперь часть времениimportantDate больше не опускается!

Я тщательно протестировал обе базы данных с помощью одной и той же программы. Это на самом деле нарушает наше приложение.

Что я могу сделать, чтобы восстановить предыдущее поведение?

ОБНОВЛЕНИЕ 1: Я сузил проблему: драйвер ojdbc6 12.1.0.1.0 имеет проблему, ojdbc6 11.2.0.3.0 работает как задумано. (оба используют БД Oracle 12)

Является ли это продолжением проблемы с отметкой времени, исправленной в 11.1? (http://www.oracle.com/technetwork/database/enterprise-edition/jdbc-faq-090281.html#08_01)

ОБНОВЛЕНИЕ 2: Поскольку Hibernate, похоже, не является проблемой, я написал пример с чистым JDBC:

OracleDataSource ods = new OracleDataSource();
...
Connection conn = ods.getConnection();
PreparedStatement ps = conn.prepareStatement("UPDATE MyEntity SET importantDate = ? WHERE myentityId = 4385");
ps.setDate(1, new java.sql.Date(new java.util.Date().getTime()));
ps.execute();
...

Этот фрагмент ведет себя по-разному при переключении между ojdbc6 11.1 и ojdbc6 12.1.

Ответы на вопрос(1)

Ваш ответ на вопрос