2016-12-23 2 views
1

Мы используем ссылку источника, чтобы включить генерируемые спящие бобы в веб-проект j2ee в eclipse. У нас есть включенный проект, который включает в себя различные коммунальные услуги и услуги и т. Д. Из основного проекта.@ Развертывания Version в веб-проекте

Когда мы импортируем наши бобы в проект утилиты, фасоль импортирует штраф. У них есть спящий режим 4.3 в них и hibernate-jpa 2.1 jar. НО, когда я импортирую те же самые компоненты модели в основной проект, вместо аннотации @Version получаются ошибки компиляции. В нем написано:

JSR 220: Java Persistence API, 9.1.17: Поддерживаются только следующие типы свойств версии: int, Integer, short, Short, long, Long, Timestamp.

Код:

@Temporal(TemporalType.TIMESTAMP) 
@Column(name = "UPDT_TMSTMP", nullable = false) 
@Version 
private Date updateTimestamp; 

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

Мы не в состоянии объяснить, почему разница между проектом утилиты и веб-модулем. Мы хотим, чтобы это было в веб-модуле, потому что мы хотим иметь возможность перемещать эти служебные модули, не импортируя одни и те же модельные компоненты несколько раз.

Любые идеи? Даже пути расследования были бы лучше, чем у нас сейчас. Мы поражаем.

+0

Вы уверены, что это ошибка компиляции, а не ошибка в плагине Eclipse (например, плагин JPA)? Компилятору Java не важно, какой тип поля имеет аннотация. Поэтому, скорее всего, ошибка возникает из плагина интеграции JPA, что может быть вызвано неправильным настроенным пути сборки (т. Е. Если JPA установлена ​​в более старую версию, как в другом проекте). – dunni

+0

Вы пытались использовать java.sql.Date вместо java.util.Date? Вы также можете проверить, настроена ли ваша база данных для хранения метки времени с точностью до миллисекунды. – fg78nc

+0

Вы также можете попробовать использовать java.sql.Timestamp – fg78nc

ответ

2

Пожалуйста, используйте временную метку. В некоторых странах есть DST (из моей pov - глупая идея). В этой стране Дата может существовать, может быть дублирована или никогда не существует. Временная метка не имеет таких исключений и намного лучше, чем SSOT.

BTW: Если у вас есть движущийся сервер (в самолете или на машине или на подводной лодке, кто может изменить часовой пояс когда-нибудь), то локализованная TimestampZ может быть лучше.