を更新しない更新の春JpaRepositoryは、私は次のJPARepoコードを持つテーブル
@Service
@Slf4j
@Transactional(readOnly = true)
public class MyService {
@Autowired
private MyObjectRepository myObjectRepository;
// some methods here
@Transactional
public void deleteMyObject(MyObject myObject) {
** first way **
myRepository.deleteById(myObject.getMyObjectId());
** second way **
myObject.setDeleted(true);
myObjectRepository.save(myObject);
}
//some methods here
}
二つの方法は、一度だけ実行されます。次回メソッドを呼び出すとき、deleteカラムのentityの値はデフォルトではfalseで、更新後はfalseのままです。しかし、デバッグ時に私はステップごとにテーブルを見て、私は削除された列がtrueに設定され、私がデバッグをリリースすると、削除フラグが再びfalseに設定されて参照してください。 注釈がキャッシュされているか正しくないですか?
例外がスローされ、ロールバックが発生する可能性があります。 –
@RC。いいえ、すべてがクリアです –
更新クエリの実行は、オブジェクトモデルに直接反映されていません。特定の更新クエリの実行後、データベースから強制的にオブジェクトを再読み込みする必要があります。 (休止状態の場合は、スコープ外のオブジェクト状態を変更しています)。したがって、あなたのアプリケーションの場合は 'false'の場合に限ります。別のものを更新したり、クエリをトリガしたりすると、メモリ内とdbの状態が異なるため、状態はリセットされます。あなたのコメントに@ D.Deinumありがとうございました。 –