2012-02-27 4 views
1

У меня есть сущность с столбцом TIMESTAMP. Когда я использую EntityManager для сохранения новой записи в моей базе данных, я могу видеть, что новая строка правильно установлена ​​в моей таблице, но если я попытаюсь извлечь этот Entity с помощью подготовленногоQuery, я верну Entity с атрибутом TIMESTAMP Null, тогда как не равно нулю в таблице.получить TIMESTAMP

@Basic(optional =  false) 
@NotNull 
@Column(name = "devis_date_crea", nullable = false) 
@Temporal(TemporalType.TIMESTAMP) 
private Date devisDateCrea; 

NB: пока не установлены моды проверки на нуль в контексте настойчивости упорствовать метод бросил EJBCallBackException.

+0

Можете ли вы опубликовать подготовленный код запроса – JScoobyCed

ответ

0

Я не уверен, знаете ли вы, но SQL Timestamp на самом деле не содержит времени и даты.

Timestamp - это тип данных, который предоставляет автоматически генерируемые двоичные числа, которые гарантированно являются уникальными в базе данных. timestamp обычно используется как механизм для строк таблицы штамповки. Размер хранилища составляет 8 байтов.

Если вам требуется дата и время, вы должны использовать тип datetime. , если вам нужно его изменить при каждом создании и обновлении, вы можете использовать значение по умолчанию для создания и триггер для обновления.

подробнее http://msdn.microsoft.com/en-us/library/aa260631(v=sql.80).aspx

+0

спасибо, я думал, что метка времени автоматически установить текущее время в поле. – user1235819

+0

рад помочь, отметьте его как ответ :) –

+0

Я не уверен, что это действительно моя проблема. Я получил правильный результат, и текущее время устанавливается в поле строки, когда оно сохраняется. Если я перезапущу приложение, запрос на получение даст мне полные данные таблицы с атрибутом даты не null. это только в том случае, если я сохраняю сущность и пытаюсь ее получить, чтобы получить дату null. : s Я думаю, что это скорее проблема сохранения, чем характеристика данных. Я использую MySQL и Glassfish с TopLink и EJB – user1235819