2016-04-05 7 views
1

は私がそのエンティティ内のエンティティを持っている私は2つの属性があります。
dateStartを - 含まれている必要がありますのみYYYY-MM-DD
timeStart - だけ時間HHが含まれている必要がありますミリメートル
- PostgreSQLの

私はpostgreSQLデータベースを使用しています。私のテーブルはこのように定義されています

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

私は(日付はjava.util.Dateのタイプである私は可能であればそれに固執したいと思います)このように冬眠使用してJavaでこのテーブルをマッピングされた:

@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は、次のようになります。4月5日(火)0時00分00秒CEST 2016
dateTimeには、次のようになります。木1月1日午前12時30分00秒CET 1970

を、私は唯一の日付/時刻のみを保持するために休止状態に言うことができる方法?私は何らかの理由でこの問題に長続きしていません@Temporalは私の望むように私のためには機能しません。

+2

データベースで日付フィールドの保存方法を確認しましたか?データベースに格納されている値と日付オブジェクトのオブジェクト表現には違いがあります。 – Dimitri

+0

はい、あなたは絶対に正しいです。すべてが今や理にかなっています。ありがとう –

答えて

1

日付を日付として保存してください。次に、データベースから日付オブジェクトを取得するときに、私が図示したように単純な日付形式を使用します。

これは、必要な形式で文字列を返します。私が示したように、あなたはあなたの日付を渡すためにあなたがしなければならないすべてのこと。また、新しいSimpleDateFormat( "String")で必要な書式を設定することを忘れないでください。