2016-10-05 9 views
2

OracleデータベースのDATE列に対応するタイムスタンプフィールドを持つエンティティがあります。タイムスタンプと休止状態の日付書式

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

私は、行を挿入すると、データベースの日付形式がある "DD/MM/YYYY HH:MM:SS" が、私はそれだけで "DD/MM/YYYY" になりたいです。

どのようにフォーマットを定義できますか?

+1

データベース内の日付データ型にはフォーマットがありません。 –

答えて

3

は、java.util.Dateとしてあなたの属性を宣言し、それに伴い注釈@Type(type="date")を使用するか、またはそれと@Temporal(TemporalType.DATE)注釈を使用しますか。ここで

は何が必要です:

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


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

Dateだけdateを保持しているのに対しTimestampは、datetimeの両方を保持するように設計されているので。

詳細については、HIBERNATE DATE VS TIMESTAMP Articleを参照してください。

+0

私は両方で試してみましたが、まだ時間を保存しています。これはサーバー側です。クライアントから、私はタイムスタンプを送信し、サーバーでは、そのタイムスタンプから日付を作成し、order.setPurchaseDate(theDate)を呼び出してエンティティを永続化します。 –

+0

はい、私は、Oracleの 'TIMESTAMP'から' DATE'に変更する必要があることを忘れていました。 –

1

Oracleデータ型はDateと呼ばれますが、datetimeは常に格納されます。 Oracleデータベースには、日付なしで一意のデータ型がありません。 Javaでは、Timestampを使用する代わりにjava.sql.Dateを使用します。 これを心配しないでください、Hiberneteはこの治療を安全かつ透明な方法にします。 JavaHibernateDate属性にtimeを無視する

+0

そして、私はその非標準的な配列の実装が、そのデータベースの2番目に奇妙なものだと思っていました。それでは、もう一度試したことがあります。これはそれを3番目に移動します。 – coladict