2012-04-20 2 views
1

Эй, мне нужно вернуть Дату из таблицы как длинную (милисекунды). Столбец, который мне нужен, находится в oracle db и имеет тип Timestamp (имя ROW_TMSTP).Возвращаемая дата в объекте

Что я сделал это:

@Column(name = "ROW_TMSTP") 
@Override 
@Temporal(TemporalType.TIMESTAMP) 
public Date getEntityTimeStamp() { 
    return entityTS; 
} 

@Transient 
public Long getVersion() { 
    return entityTS.getTime(); 
} 

, который работает .. иногда. Он не работает, если я хочу выбрать записи, где версия выше, чем x.

Как написать класс сущности, который отлично работает на Timestamps как longs?

И, пожалуйста, не пытайтесь убедить меня изменить структуру db. Я должен придерживаться того, что есть, и мне нужно вернуть поле getVersion.

Спасибо!

EDIT

Отсутствие отображения в GetVersion получило мои запросов на выборке, чтобы привести к недопустимому идентификатору. Удаление @Transient и добавление правильного сопоставления решили вещь.

@Column(name="ROW_TMSTP", updatable=false, insertable=false) 
public Long getVersion() { 
    return entityTS.getTime(); 
} 

Один из них был немного сложным, хотя долгое время встречался ... но это не моя проблема.

+0

Как решить проблему сравнения? – Sudhakar

+0

информация выше - нет @Transient Long getVersion работает. – Deo

ответ

0

Она не будет работать, если я хочу, чтобы выбрать записи, где версия выше чем х

One Alternate образом, вместо того, чтобы использовать версию в ИНЕКЕ, вы можете преобразовать долго метки и используйте entityTimestamp в предложении where, которое должно это сделать. Я думаю,

+0

yep, я получил его так, но это означает, что мне нужно изменить около 40 queryString, которые я бы не хотел делать. – Deo

Смежные вопросы