データの挿入と更新時間
最近のプロジェクトでは、いくつかのテーブルにデータの挿入時間と更新時間を記録する必要があります.
createdTimeはデータが挿入された時間を記録し、updatedTimeはデータが更新された時間を記録する.@Column注記のupdatable=falseに注意してください.そうしないと、タイムスタンプはMySQLによって現在の時間に変更され、Hibernateの更新文は時間を元の値に戻します.
MySQLのトリガを使用しても、この機能を実現できます:http://lanhuidong.iteye.com/blog/765134
import java.util.Date;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
@Entity
public class Wangwang {
private Integer id;
private User owner;
private boolean deleted;
private Date createdTime = new Date();
private Date updatedTime;
@Id
@GeneratedValue
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
@ManyToOne
public User getOwner() {
return owner;
}
public void setOwner(User owner) {
this.owner = owner;
}
@Column(nullable = false)
public boolean isDeleted() {
return deleted;
}
public void setDeleted(boolean deleted) {
this.deleted = deleted;
}
@Column(updatable=false)
public Date getCreatedTime() {
return createdTime;
}
public void setCreatedTime(Date createdTime) {
this.createdTime = createdTime;
}
@Column(columnDefinition="TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP", updatable=false)
public Date getUpdatedTime() {
return updatedTime;
}
public void setUpdatedTime(Date updatedTime) {
this.updatedTime = updatedTime;
}
}
createdTimeはデータが挿入された時間を記録し、updatedTimeはデータが更新された時間を記録する.@Column注記のupdatable=falseに注意してください.そうしないと、タイムスタンプはMySQLによって現在の時間に変更され、Hibernateの更新文は時間を元の値に戻します.
MySQLのトリガを使用しても、この機能を実現できます:http://lanhuidong.iteye.com/blog/765134