DB に、デフォルト値が の列がありますsysdate
。アプリ側で対応するプロパティに何も与えていないときに、そのデフォルト値を挿入する方法を探しています。ところで、私は注釈ベースの構成を使用しています。
何かアドバイス?
日付列がdbms-sidenull
として定義されていても、挿入時に値を取得する理由は、列の値は、クエリで列に値が指定されていない場合にのみ使用されるためです。つまり、たとえ与えられたとしても、それが文に現れてはならないということです。default SYSDATE
default
INSERT INTO
null
default SYSDATE
DBMS側でを使用する場合は、SQLから列を取得するために@Column
withを構成する必要があります。insertable=false
INSERT
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "myDate", insertable=false)
private Date myDate;
このアプローチでは、エンティティを作成するときにアプリのプロパティに提供する値が常に無視されることを考慮してください。本当に時々日付を提供できるようにしたい場合は、デフォルト値の代わりにDBトリガーを使用して値を設定することを検討する必要があります。
default SYSDATE
DBMSの定義を使用する代わりの方法があります。まだ割り当てられていない場合に限り、保存/更新の前に、@PrePersist
および注釈を使用して現在の日付をプロパティに割り当てることができます。@PreUpdate
@PrePersist
protected void onCreate() {
if (myDate == null) { myDate = new Date(); }
}
この密接に関連する質問は、さまざまなアプローチを提供します。HibernateとMySQLを使用した作成タイムスタンプと最終更新タイムスタンプです。
Hibernate を使用している場合は、@CreationTimestamp
デフォルトの日付を挿入するために使用できます。
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "create_date")
private Date createDate;
必要に@UpdateTimestamp
応じて値を更新する
@UpdateTimestamp
@Temporal(TemporalType.TIMESTAMP)
@Column(name = "modify_date")
private Date modifyDate;
Or you can initialize the property of the POJO directly e.g:
//java code property declaration
private String surname = "default";