Тип Java для даты/времени при использовании Даты Oracle с В спящем режиме

У нас есть столбец Oracle Date. Сначала в нашем классе Java/быть в спящем режиме мы использовали java.sql.Date. Это работало, но это, казалось, не хранило информации времени в базе данных, когда мы сохраняем так, я изменил тип данных Java для Добавления метки времени. Теперь мы получаем эту ошибку:

springframework.beans.factory. BeanCreationException: Ошибка, создающая боб с именем 'org.springframework.dao.an нотация. PersistenceExceptionTranslationPostProcessor#0', определенный в ресурсе пути к классу [граничный доменный сервисом -config.xml]: Инициализация боба перестала работать; вложенная исключительная ситуация является org.springframework.beans.factory. BeanCreatio nException: Ошибка, создающая боб с именем 'sessionFactory' определенный в ресурсе пути к классу [m-service-doma in-config.xml]: Вызов init метода перестал работать; вложенная исключительная ситуация является org.hibernate. HibernateException: Неправильный тип столбца: CREATE_TS, ожидаемый: метка времени

Любые идеи о том, как отобразить Oracle Date при сохранении части времени?


Обновление: Я могу заставить это работать, если я использую Oracle Timestamp тип данных, но я не хочу того уровня точности идеально. Просто хочу основную Oracle Date.

10
задан Pascal Thivent 1 May 2010 в 00:42
поделиться

5 ответов

Непосредственный ответ, но я бы использовал тип Oracle TIMESTAMP:

  • TIMESTAMP (дробная_секунда_ точность) Год, месяц и день значения даты, а также час, минута, и секундные значения времени, где Fractional_seconds_precision необязательно указывает количество цифр в дробной части {{1} } SECOND поле даты и времени и может быть числом в диапазоне от 0 до 9. По умолчанию - 6. Например, вы указываете TIMESTAMP в виде литерала:

     TIMESTAMP'1997-01-31 09: 26: 50.124 '
     

с желаемой дробной_секундной_точностью .

7
ответ дан 3 December 2019 в 20:41
поделиться

Вы воссоздали базу данных после того, как вы сделали это изменение?

Если в гибернаке изначально создал таблицу с помощью Java.sql.date для столбца, я не в курсе От любого пути он может изменить его, основываясь на изменении только в коде Java.

0
ответ дан 3 December 2019 в 20:41
поделиться

Я всегда использую java.util.Date с датами Oracle, и он отлично обрабатывает дату и время.

8
ответ дан 3 December 2019 в 20:41
поделиться

Может быть, у вас эта проблема? Убедитесь, что у вас последний драйвер JDBC, имя файла должно быть ojdbc5.jar.

2
ответ дан 3 December 2019 в 20:41
поделиться

Во-первых, вы правы, что вам нужно использовать класс java.sql.Timestamp, поскольку класс java.sql.Date явно не представляет конкретное время суток (скорее, он пытается представить полночь по Гринвичу).

Что касается вашей ошибки - вы не предоставили достаточно информации, чтобы сделать что-то большее, чем предположение (для определения причины потребуется просмотреть конфигурацию Hibernate и класс). Однако, если вы просто изменили класс поля в классе Java, то, конечно, вам придется обновить и отображение Hibernate. Если вы не сделали этого, то, скорее всего, это и привело к несовпадению. Попробуйте явно указать type="timestamp" для соответствующего отображения.

EDIT: Если вы используете аннотации, то обновили ли вы аннотацию для этого свойства на @Temporal(TemporalType.TIMESTAMP)? Если нет, то вам нужно будет это сделать (а если вы это сделали, то должны были сказать об этом :-)).

1
ответ дан 3 December 2019 в 20:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: