# Class DataRow

java.lang.Object
java.util.AbstractMap<String,Object>
java.util.HashMap<String,Object>
org.apache.cayenne.DataRow

All Implemented Interfaces:
  `Serializable, Cloneable, Map<String,Object>`

public class DataRow extends HashMap<String,Object>
DataRow a map that holds values retrieved from the database for a given query row. DataRows are used to cache raw database data and as a reference point for tracking PersistentObject changes.

Since:
  1.1
See Also:
  - Serialized Form

- ## Nested Class Summary

  ### Nested classes/interfaces inherited from class AbstractMap

  `AbstractMap.SimpleEntry<K,V>, AbstractMap.SimpleImmutableEntry<K,V>`

  ### Nested classes/interfaces inherited from interface Map

  `Map.Entry<K,V>`

- ## Field Summary

  Fields
  Modifier and Type
  Field
  Description
  `protected String`
  `entityName`
  `protected long`
  `replacesVersion`
  `protected long`
  `version`

- ## Constructor Summary

  Constructors
  Constructor
  Description
  `DataRow(int initialCapacity)`
  `DataRow(Map<String,?> map)`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `DataRow`
  `applyDiff(DataRow diff)`
  Builds a new DataRow, merging changes from `diff` parameter with data contained in this DataRow.
  `DataRow`
  `createDiff(DataRow row)`
  Creates a DataRow that contains only the keys that have values that differ between this object and `row` parameter.
  `ObjectId`
  `createTargetObjectId(String entityName, DbRelationship relationship)`
  Returns an ObjectId of an object on the other side of the to-one relationship, for this DataRow representing a source of relationship.
  `String`
  `getEntityName()`
  `long`
  `getReplacesVersion()`
  `long`
  `getVersion()`
  `void`
  `setEntityName(String entityName)`
  `void`
  `setReplacesVersion(long replacesVersion)`
  Sets the version of DataRow replaced by this one in the store.
  `String`
  `toString()`

  ### Methods inherited from class HashMap

  `clear, clone, compute, computeIfAbsent, computeIfPresent, containsKey, containsValue, entrySet, forEach, get, getOrDefault, isEmpty, keySet, merge, newHashMap, put, putAll, putIfAbsent, remove, remove, replace, replace, replaceAll, size, values`

  ### Methods inherited from class AbstractMap

  `equals, hashCode`

  ### Methods inherited from class Object

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

  ### Methods inherited from interface Map

  `equals, hashCode`

- ## Field Details

  - ### version

    protected long version

  - ### replacesVersion

    protected long replacesVersion

  - ### entityName

    protected String entityName
    Since:
      3.0

- ## Constructor Details

  - ### DataRow

    public DataRow(Map<String,?> map)

  - ### DataRow

    public DataRow(int initialCapacity)

- ## Method Details

  - ### getVersion

    public long getVersion()

  - ### getReplacesVersion

    public long getReplacesVersion()

  - ### setReplacesVersion

    public void setReplacesVersion(long replacesVersion)
    Sets the version of DataRow replaced by this one in the store.

  - ### applyDiff

    public DataRow applyDiff(DataRow diff)
    Builds a new DataRow, merging changes from `diff` parameter with data contained in this DataRow.

  - ### createDiff

    public DataRow createDiff(DataRow row)
    Creates a DataRow that contains only the keys that have values that differ between this object and `row` parameter. Diff values are taken from the `row` parameter. It is assumed that key sets are compatible in both rows (e.g. they represent snapshots for the same entity). Returns null if no differences are found.

  - ### createTargetObjectId

    public ObjectId createTargetObjectId(String entityName, DbRelationship relationship)
    Returns an ObjectId of an object on the other side of the to-one relationship, for this DataRow representing a source of relationship. Returns null if snapshot FK columns indicate a null to-one relationship.

  - ### toString

    public String toString()
    Overrides:
      `toString` in class `AbstractMap<String,Object>`

  - ### getEntityName

    public String getEntityName()
    Since:
      3.0

  - ### setEntityName

    public void setEntityName(String entityName)
    Since:
      3.0