0

次のデータベース列があります。

 `last_modified` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

休止状態で次のマッピングを使用します。

@Temporal(TemporalType.TIMESTAMP)
@Column(name="last_modified", nullable=false, length=19)
public Date getLastModified() {
    return this.lastModified;
}

これは何ヶ月もうまく機能していますが、突然、どこからともなく次のエラーが発生します。

javax.persistence.PersistenceException: org.hibernate.PropertyValueException: 非 null プロパティが null または一時的な値を参照しています: com.fs.model.BrowserHistory.lastModified

では、なぜ突然このようなことが起こったのでしょうか。lastModified フィールドを null 許容に設定しても問題ありませんか?

4

2 に答える 2

0

変更のタイムスタンプを記録したいようです。手動で設定しないようにする (または設定せずにエラーが発生する) ようにするには、ライフサイクル コールバックを使用できます。

@PrePersist
public void updateTimestamps() {
    lastModified = new Date();
}
于 2013-04-26T14:39:16.507 に答える
0

データベースで生成された列には、特定の注釈が必要であることがわかりました。

@Column(name="last_modified", nullable=false, length=19, insertable=false, updatable=false)
@Generated(GenerationTime.ALWAYS)

現在これを試していますが、問題は解決すると思います。

于 2013-04-26T21:18:32.557 に答える