У нас есть столбец 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
.
Непосредственный ответ, но я бы использовал тип Oracle TIMESTAMP:
TIMESTAMP (дробная_секунда_ точность) Год, месяц и день значения даты, а также час, минута, и секундные значения времени, где
Fractional_seconds_precision
необязательно указывает количество цифр в дробной части {{1} }SECOND
поле даты и времени и может быть числом в диапазоне от 0 до 9. По умолчанию - 6. Например, вы указываетеTIMESTAMP
в виде литерала:TIMESTAMP'1997-01-31 09: 26: 50.124 '
с желаемой дробной_секундной_точностью
.
Вы воссоздали базу данных после того, как вы сделали это изменение?
Если в гибернаке изначально создал таблицу с помощью Java.sql.date для столбца, я не в курсе От любого пути он может изменить его, основываясь на изменении только в коде Java.
Я всегда использую java.util.Date с датами Oracle, и он отлично обрабатывает дату и время.
Может быть, у вас эта проблема? Убедитесь, что у вас последний драйвер JDBC, имя файла должно быть ojdbc5.jar.
Во-первых, вы правы, что вам нужно использовать класс java.sql.Timestamp, поскольку класс java.sql.Date явно не представляет конкретное время суток (скорее, он пытается представить полночь по Гринвичу).
Что касается вашей ошибки - вы не предоставили достаточно информации, чтобы сделать что-то большее, чем предположение (для определения причины потребуется просмотреть конфигурацию Hibernate и класс). Однако, если вы просто изменили класс поля в классе Java, то, конечно, вам придется обновить и отображение Hibernate. Если вы не сделали этого, то, скорее всего, это и привело к несовпадению. Попробуйте явно указать type="timestamp"
для соответствующего отображения.
EDIT: Если вы используете аннотации, то обновили ли вы аннотацию для этого свойства на @Temporal(TemporalType.TIMESTAMP)
? Если нет, то вам нужно будет это сделать (а если вы это сделали, то должны были сказать об этом :-)).