2016-10-05 2 views
2

У меня есть объект с полем Timestamp, соответствующим столбцу DATE в базе данных Oracle.Формат даты с отметкой времени и спящим режимом

@Entity 
public class Order { 
    private Tiemstamp purchaseDate; 
    //more fields... 
} 

Когда я вставить строку, формат DATE в базе данных «дд/мм/гггг чч: мм: сс», но я хочу, чтобы это было просто «дд/мм/гггг».

Как определить формат?

+1

Типы данных даты в базе данных не имеют формата. –

ответ

3

Игнорирование time в атрибуте Date в Java и Hibernate, объявить атрибут, как и java.util.Date либо использовать аннотацию @Type(type="date") вместе с ним или использовать @Temporal(TemporalType.DATE) аннотацию с ним.

Вот что вам нужно:

@Column 
@Type(type="date") 
private Date purchaseDate; 


@Column 
@Temporal(TemporalType.DATE) 
private Date purchaseDate; 

Поскольку Timestamp предназначен для хранения как date и time, в то время как Date держит только date.

Для получения более подробной информации, пожалуйста, обратитесь к HIBERNATE DATE VS TIMESTAMP Article.

+0

Я пробовал с обоими, и он все еще хранит время. Это на стороне сервера. От клиента я отправляю временную метку, и на сервере я создаю дату из этой временной метки, вызываю order.setPurchaseDate (theDate) и сохраняю объект. –

+0

Да, но я забыл упомянуть, что вы должны изменить его с 'TIMESTAMP' на' DATE' в Oracle. –

1

Несмотря на то, что тип данных Oracle называется Date, он всегда хранит дату и время. База данных Oracle не имеет типа данных, уникального по дате без времени. В Java вместо использования временной метки используйте java.sql.Date. Не беспокойтесь об этом, Hibernete делает это лечение безопасным и прозрачным способом.

+0

И здесь я думал, что их нестандартная реализация массивов была второй по значимости в этой базе данных. Опять же, это единственное, что я пробовал. Это переносит его на треть. – coladict

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