2009-11-30 4 views
2

У меня есть таблица MySQL с одним из столбцов типа Date. В моем файле сопоставления hibernate я сопоставил этот столбец, чтобы ввести java.util.Date. Теперь в HQL при попытке получить объекты на основе равенства даты я не получаю никаких результатов, если я установил Date, используя новую Date(). Если я нормализую дату, установив часы, минуты и секунды до нуля, я получаю результаты. Это необходимо, так как я объявил тип столбца SQL как Date, а не Timestamp?Hibernate HQL и Date

ответ

2

Попробуйте java.sql.Date

Надеюсь, это поможет вам с вопросом дата равенства.

RDJ

+0

В картографическом типе? – Abhi

+0

«У меня есть таблица MySQL с одним из столбцов типа Date. В моем файле сопоставления hibernate я сопоставил этот столбец с именем java.util.Date» - вместо этого попробуйте java.sql.Date – Richie

+0

Спасибо. Это работает, но знаете ли вы, почему он не работает с типом java.util.date, даже когда тип столбца Date? Если это временная метка, я понимаю, но с Date эта вещь меня озадачивает. – Abhi

0

Я был в состоянии использовать java.util.Date с колонкой Дата SQL Server, явно установив @type:

@Type(type="date") 
public java.util.Date getDate() { 
    return date; 
} 

Без аннотацию, я получал

java.lang.IllegalArgumentException: формат временной отметки должен быть yyyy-mm-dd hh: mm: ss [.fffffffff]

с Hibernate 3.5.1-final

+0

С JPA, я думаю, вы должны использовать '@Temporal (DATE)' –

+0

@Temporal (TemporalType.DATE) также работает для меня. Здесь есть несколько документов: http://docs.jboss.org/hibernate/stable/annotations/reference/en/html/entity.html#entity-mapping-property, что делает его похожим на более стандартное - спасибо, Pascal ! – Andrew