すべてのdbテーブルには、デフォルトでEND_OF_TIMEなどのendTimeフィールドが必要です。私は2038年の制限に満足していないため、mysqlでendTimeをDATETIME型にする必要があります。
My Javaコードは:
@MappedSuperclass
@Inheritance(strategy=InheritanceType.TABLE_PER_CLASS)
public class BaseDBEntity {
@Id
@Column(length=36)
public String id;
@Temporal(TemporalType.TIMESTAMP)
public Date startTime;
@Temporal(TemporalType.TIMESTAMP)
public Date endTime;
public BaseDBEntity() {
}
}
DATETIME型のendTimeフィールドを使用してテーブルを手動で作成し、エンティティのendTimeをその列にマップすることで回避できますが、Hibernateでテーブルを自動的に生成したいのですが、どうすればよいですか?
@Column
アノテーションのcolumnDefinition
属性を使用します :
@Column(name = "startTime", columnDefinition="DATETIME")
@Temporal(TemporalType.TIMESTAMP)
private Date startTime;
そして、属性を非公開にしてください。