# Class SoftDeleteDbRowOp

java.lang.Object
org.apache.cayenne.access.flush.operation.BaseDbRowOp
org.apache.cayenne.access.flush.operation.DeleteDbRowOp
org.apache.cayenne.access.flush.operation.SoftDeleteDbRowOp

All Implemented Interfaces:
  `DbRowOp, DbRowOpWithQualifier, DbRowOpWithValues`

public class SoftDeleteDbRowOp extends DeleteDbRowOp implements DbRowOpWithValues
A "soft" delete op that is executed as an UPDATE setting the soft-delete flag column to `true` instead of a SQL DELETE, leaving the row physically in the table. For all other purposes — sorting, merging, snapshot cache eviction and the rest of the flush postprocessing — it behaves exactly like a `DeleteDbRowOp`.

Since:
  5.0

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected final Values`
  `values`

  ### Fields inherited from class DeleteDbRowOp

  `qualifier`

  ### Fields inherited from class BaseDbRowOp

  `changeId, entity, hashCode, object`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `SoftDeleteDbRowOp(Persistent object, DbEntity entity, ObjectId id, DbAttribute deletedAttribute)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `<T> T`
  `accept(DbRowOpVisitor<T> visitor)`
  `Values`
  `getValues()`
  `boolean`
  `isSameBatch(DbRowOp rowOp)`
  `String`
  `toString()`

  ### Methods inherited from class DeleteDbRowOp

  `equals, getQualifier, setChangeId`

  ### Methods inherited from class BaseDbRowOp

  `entitiesHaveSameNameAndDataMap, getChangeId, getEntity, getObject, hashCode`

  ### Methods inherited from class Object

  `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

  ### Methods inherited from interface DbRowOp

  `getChangeId, getEntity, getObject`

- ## Field Details

  - ### values

    protected final Values values

- ## Constructor Details

  - ### SoftDeleteDbRowOp

    public SoftDeleteDbRowOp(Persistent object, DbEntity entity, ObjectId id, DbAttribute deletedAttribute)

- ## Method Details

  - ### accept

    public <T> T accept(DbRowOpVisitor<T> visitor)
    Specified by:
      `accept` in interface `DbRowOp`
    Overrides:
      `accept` in class `DeleteDbRowOp`

  - ### getValues

    public Values getValues()
    Specified by:
      `getValues` in interface `DbRowOpWithValues`

  - ### isSameBatch

    public boolean isSameBatch(DbRowOp rowOp)
    Specified by:
      `isSameBatch` in interface `DbRowOp`
    Overrides:
      `isSameBatch` in class `DeleteDbRowOp`
    Parameters:
      `rowOp` - to check
    Returns:
      is this and rowOp operations belong to same sql batch

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `DeleteDbRowOp`