Неверное значение для типа timestamp на рабочем сервере

Я работаю с: seam 2.2.2 + hibernate + richfaces + jboss 5.1 + postgreSQL

У меня есть модуль, которому нужно загрузить некоторые данные из базы данных. Легкий. Проблема в том, что при разработке он работает нормально, 100%, но когда я развертываю на своем производственном сервере и пытаюсь получить данные, возникает ошибка:

could not read column value from result set: fechahor9_504_; Bad value for type timestamp : [C@122e5cf
SQL Error: 0, SQLState: 22007
Bad value for type timestamp : [C@122e5cf
javax.persistence.PersistenceException: org.hibernate.exception.DataException: could not execute query

[другие ошибки]

Caused by: org.postgresql.util.PSQLException: Bad value for type timestamp : [C@122e5cf
at org.postgresql.jdbc2.TimestampUtils.loadCalendar(TimestampUtils.java:232)

[другие ошибки]

Caused by: java.lang.NumberFormatException: Trailing junk on timestamp: ''
at org.postgresql.jdbc2.TimestampUtils.loadCalendar(TimestampUtils.java:226)

Я не могу понять, почему это работает на моей машине (разработка) и почему нет на производстве. Какие-нибудь подсказки? Кто-нибудь сталкивался с той же проблемой? Точно такая же компиляция


person Juan Javaloyes    schedule 01.06.2012    source источник
comment
скорее всего, у вас разные версии драйвера jdbc в производственной среде и на вашем компьютере.   -  person Stefano Travelli    schedule 02.06.2012
comment
Какие версии PostgreSQL вы используете в разработке и производстве? Проверяет ли ваше приложение метки времени, прежде чем пытаться их вставить? Откуда взялось "C @ 122e5cf"? Это похоже на неправильное значение, которое пытались вставить в поле отметки времени.   -  person Mark Stosberg    schedule 02.06.2012
comment
Я использую один и тот же драйвер jdbc для разработки и производства. Версия PostgreSQL - 8.4, работает на сервере ubuntu, как prod, так и dev. Я попытался направить свое приложение разработчика на производственную базу данных, и оно работает как шарм. Ошибка возникает только в том случае, если я запускаю приложение с jBoss на рабочем сервере. Я считаю, что "C @ 122e5cf" - это объект, который я пытаюсь восстановить с помощью запроса. Этот объект имеет некоторые значения даты (аннотация временной метки) ... У меня есть несколько других объектов с такими столбцами, и они не выдают ошибок при производстве   -  person Juan Javaloyes    schedule 04.06.2012
comment
Стефано Травелли был прав. Я проверял jBoss на производстве, и в [jboss_dir] / common / lib был старый драйвер jdbc из старого приложения jwebstart (не разработанного мной). Удалил этот jdbc, и он отлично работает. Я должен проверить, нужно ли еще старое приложение, и если да, проверить, работает ли оно по-прежнему без jdbc или с обновленной версией   -  person Juan Javaloyes    schedule 04.06.2012


Ответы (2)


Стефано Травелли был прав. Я проверял jBoss на производстве, и в [jboss_dir] / common / lib был старый драйвер jdbc из старого приложения jwebstart (не разработанного мной). Удалил этот jdbc, и он отлично работает. Я должен проверить, требуется ли по-прежнему старое приложение, и если да, то проверить, работает ли оно по-прежнему без jdbc или с обновленной версией.

person Juan Javaloyes    schedule 04.06.2012

Не уверен, что это за история драйвера ... но проблема для меня появляется, когда JDBC пытается проанализировать bigint из БД в

myOjbect.setDate(Date date){...}

другой, «дружественный к JDBC», по какой-то причине игнорируется.

myOjbect.setDate(long date){...}

Итак ... удаление установщика даты и оставление длинного решает проблему. Это большой обходной путь ... но может кому-то помочь :)

person d.raev    schedule 12.10.2012