1
@javax.persistence.Column(name = "created", nullable = false, insertable = true, updatable = true, length = 19, precision = 0)
@Basic
public Timestamp getCreated() {
    return created;
}

public void setCreated(Timestamp created) {
    this.created = created;
}

このエンティティがあり、MySQL で作成されたタイムスタンプを提供したいと考えています。追加しようとしまし@GeneratedValuenullable = trueが、値をnullにすることはできないと言って保存するときにまだ失敗します。

これがデフォルト値であるため、エンティティが null を渡していることを理解しています。null を渡そうとしていて、NULl フィールドとして設定されていないため、MySQL はエラーをスローしています。

しかし、Java オブジェクト レベルでこれを回避することは可能ですか? createdたとえば、エンティティを保存するときに列を送信しないでください。

4

1 に答える 1

2

@PrePersistハンドラーを使用してフィールドを初期化します。初期化は、エンティティが保存される前に行われるため、null ポインター例外が回避されます。

@PrePersist
protected void beforeCreate() {
    if(created == null)
        created = new Timestamp(System.currentTimeMillis());
}
于 2013-02-28T21:33:15.293 に答える