2016-04-05 5 views
1

ich innerhalb dieser Einheit eine Einheit haben Ich habe 2 Attribute:
dateStart - nur yyyy-MM-dd
time enthalten sollte - nur Zeit HH enthalten sollte: mm
Hibernate mit Datum und Zeit zu tun - PostgreSql

Ich benutze PostgreSQL-Datenbank. Meine Tabelle ist wie folgt definiert:

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

ich kartiert diese Tabelle in Java wie diese Hibernate (Datum ist Art von java.util.Date würde Ich mag damit bleiben, wenn möglich):

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

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

Ich benutze auch Feder. Ich habe ein Formular, in dem Benutzereingabe füllen kann, die diese Einheit tatsächlich schaffen

<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> 

Dies ist mein Controller, wo ich meine Einheit tatsächlich schaffen

@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"; 
} 

(wenn Benutzer einreichen Form) aber wenn ich meine Einheit drucken xxx.toString(). Mein Datum und meine Uhrzeit werden nicht korrekt gespeichert. dateStart wie folgt aussehen: Di 5. April 00:00:00 CEST 2016
Datums- und Uhrzeit wie folgt aussehen: Do 1. JANUAR 00.30.00 CET 1970

Wie kann ich nur sagen, Hibernate Datum/nur Zeit bestehen bleiben ? Ich bin aus irgendeinem Grund so lange mit diesem Problem beschäftigt. @Temporal funktioniert nicht so, wie ich es wollte.

+2

Haben Sie in der Datenbank nachgesehen, wie die Datumsfelder gespeichert sind? Es besteht ein Unterschied zwischen den in der Datenbank gespeicherten Werten und der Objektdarstellung des Datumsobjekts. – Dimitri

+0

Ja, Sie haben absolut Recht. Alles ergibt jetzt Sinn. Vielen Dank –

Antwort

1

Ich denke, Sie sollten nur das Datum als Datum speichern. Wenn Sie Ihr Datumsobjekt aus der Datenbank abrufen, verwenden Sie ein einfaches Datumsformat, wie ich es illustriert habe.

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); 
    } 

Dies wird Zeichenfolge im gewünschten Format zurückgeben. Alles was Sie tun müssen, um Ihr Date zu übergeben, wie ich es gezeigt habe. Denken Sie daran, das gewünschte Format auch im neuen SimpleDateFormat ("String") anzugeben.

Verwandte Themen