2016-04-05 3 views
1

У меня есть объект в пределах этого объекта у меня есть 2 атрибута:
dateStart - должен содержать только гггг-ММ-дд
timeStart - должен содержать только время ЧЧ: мм
Hibernate работы с датой и временем - PostgreSql

Я использую базу данных postgreSQL. Моя таблица определяется следующим образом:

CREATE TABLE xxx 
(
    dateStart date, 
    timeStart time without time zone 
) 

Я сопоставляются эту таблицу в Java, используя спящий режим, как это (дата является тип java.util.Date я хотел бы придерживаться, что, если это возможно):

@Temporal(TemporalType.DATE) 
@DateTimeFormat(pattern = "yyyy-MM-dd") 
private Date dateStart; 

@Temporal(TemporalType.TIME) 
@DateTimeFormat(pattern = "HH:mm") 
private Date dateTime; 

Я также использую весну. У меня есть форма, где пользователь может заполнить ввод, который на самом деле создать этот объект

<form:form method="post" class="form-horizontal" action="..." commandName="xxx"> 
    <form:input path="dateStart" type="date"/> 
    <form:input path="timeStart" type="time"/> 
    ..... 
    <submit button> 
</form:form> 

Это мой контроллер, где я на самом деле создать свой объект (если пользователь отправить форму)

@RequestMapping(value = "/viewSpecificTests", method = RequestMethod.POST) 
public String viewSpecificTests(Model model, @Valid XXX xxx, BindingResult result) { 

    if (result.hasErrors()) { 
     return "createSpecificTest"; 
    } 

    xxxService.createTable(xxx); 
    return "viewSpecificTests"; 
} 

Однако, когда я печатаю свою сущность xxx.toString(). Мои даты и время не сохраняются правильно. dateStart выглядеть следующим образом: вт 5 апреля 00:00:00 CEST 2016
DATETIME выглядеть следующим образом: Чт Янв 01 12:30:00 CET 1970

Как я могу сказать, спящий режим сохранится только дата/время только ? Я застрял в этой проблеме так долго по какой-то причине @Temporal не работает для меня так, как я хотел.

+2

Вы проверили базу данных, как хранятся поля даты? Существует разница между значениями, хранящимися в базе данных, и представлением объекта объекта даты. – Dimitri

+0

Да, вы абсолютно правы. Теперь все имеет смысл. благодаря –

ответ

1

Я думаю, вам стоит просто сохранить дату в качестве даты. Затем, когда вы извлекаете свой объект даты из базы данных, используйте простой формат даты, как я проиллюстрировал.

public void getDate(){ 
     Date d = new Date();//Put your date here 

     SimpleDateFormat formatter = new SimpleDateFormat("HH:mm");//use java.text.SimpleDateformat 

     String newFomart = formatter.format(d); 
    } 

Это вернет строку в том формате, который вы хотите. Все, что вам нужно сделать, чтобы передать дату, как я показал. Не забудьте также указать нужный формат в новом SimpleDateFormat («String»);

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