Package org.datanucleus.metadata
Class VersionMetaData
- java.lang.Object
-
- org.datanucleus.metadata.MetaData
-
- org.datanucleus.metadata.VersionMetaData
-
- All Implemented Interfaces:
Serializable
public class VersionMetaData extends MetaData
Three common strategies for versioning instances are supported by standard metadata. These include state-comparison, timestamp, and version-number.- State-comparison involves comparing the values in specific columns to determine if the database row was changed.
- Timestamp involves comparing the value in a date-time column in the table. The first time in a transaction the row is updated, the timestamp value is updated to the current time.
- Version-number involves comparing the value in a numeric column in the table. The first time in a transaction the row is updated, the version-number column value is incremented.
There are two forms of version storage.
- The JDO method of adding a surrogate column, using the column/columns/index info in this class
- The JPA method of using an existing field/method. This uses the "fieldName" info only
- See Also:
- Serialized Form
-
-
Field Summary
Fields Modifier and Type Field Description protected ColumnMetaData
columnMetaData
Contains the metadata for column.protected String
columnName
column nameprotected String
fieldName
Name of the field that contains the version (if not generating a surrogate column).protected IndexedValue
indexed
Indexed value.protected IndexMetaData
indexMetaData
IndexMetaData for the version column.protected VersionStrategy
versionStrategy
strategy for generating the version.-
Fields inherited from class org.datanucleus.metadata.MetaData
EXTENSION_CLASS_CREATETIMESTAMP, EXTENSION_CLASS_CREATETIMESTAMP_COLUMN_NAME, EXTENSION_CLASS_CREATEUSER, EXTENSION_CLASS_CREATEUSER_COLUMN_LENGTH, EXTENSION_CLASS_CREATEUSER_COLUMN_NAME, EXTENSION_CLASS_MULTITENANCY_COLUMN_LENGTH, EXTENSION_CLASS_MULTITENANCY_COLUMN_NAME, EXTENSION_CLASS_MULTITENANCY_DISABLE, EXTENSION_CLASS_MULTITENANCY_JDBC_TYPE, EXTENSION_CLASS_READ_ONLY, EXTENSION_CLASS_SOFTDELETE, EXTENSION_CLASS_SOFTDELETE_COLUMN_NAME, EXTENSION_CLASS_UPDATETIMESTAMP, EXTENSION_CLASS_UPDATETIMESTAMP_COLUMN_NAME, EXTENSION_CLASS_UPDATEUSER, EXTENSION_CLASS_UPDATEUSER_COLUMN_LENGTH, EXTENSION_CLASS_UPDATEUSER_COLUMN_NAME, EXTENSION_CLASS_VERSION_FIELD_NAME, EXTENSION_CLASS_VIEW_DEFINITION, EXTENSION_CLASS_VIEW_IMPORTS, EXTENSION_MEMBER_CACHEABLE, EXTENSION_MEMBER_CALENDAR_ONE_COLUMN, EXTENSION_MEMBER_CASCADE_DETACH, EXTENSION_MEMBER_CASCADE_PERSIST, EXTENSION_MEMBER_CASCADE_REFRESH, EXTENSION_MEMBER_CASCADE_UPDATE, EXTENSION_MEMBER_COMPARATOR_NAME, EXTENSION_MEMBER_CONTAINER_ALLOW_NULLS, EXTENSION_MEMBER_ENUM_GETTER_BY_VALUE, EXTENSION_MEMBER_ENUM_VALUE_GETTER, EXTENSION_MEMBER_FETCH_FK_ONLY, EXTENSION_MEMBER_IMPLEMENTATION_CLASSES, EXTENSION_MEMBER_INSERTABLE, EXTENSION_MEMBER_KEY_IMPLEMENTATION_CLASSES, EXTENSION_MEMBER_LIST_ORDERING, EXTENSION_MEMBER_RELATION_DISCRIM_COLUMN, EXTENSION_MEMBER_RELATION_DISCRIM_PK, EXTENSION_MEMBER_RELATION_DISCRIM_VALUE, EXTENSION_MEMBER_STRATEGY_WHEN_NOTNULL, EXTENSION_MEMBER_TYPE_CONVERTER_DISABLED, EXTENSION_MEMBER_TYPE_CONVERTER_NAME, EXTENSION_MEMBER_UPDATEABLE, EXTENSION_MEMBER_VALUE_IMPLEMENTATION_CLASSES, EXTENSION_VERSION_NUMBER_INITIAL_VALUE, extensions, METADATA_CREATED_STATE, METADATA_INITIALISED_STATE, METADATA_POPULATED_STATE, METADATA_USED_STATE, metaDataState, parent, VENDOR_NAME
-
-
Constructor Summary
Constructors Constructor Description VersionMetaData()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description ColumnMetaData
getColumnMetaData()
String
getColumnName()
String
getFieldName()
IndexedValue
getIndexed()
IndexMetaData
getIndexMetaData()
VersionStrategy
getVersionStrategy()
void
initialise(ClassLoaderResolver clr)
Initialisation method.ColumnMetaData
newColumnMetaData()
Method to create a new ColumnMetaData, add it, and return it.IndexMetaData
newIndexMetaData()
Method to create a new Index metadata, add it, and return it.void
setColumnMetaData(ColumnMetaData columnMetaData)
Mutator for column MetaData.VersionMetaData
setColumnName(String columnName)
VersionMetaData
setFieldName(String fieldName)
VersionMetaData
setIndexed(IndexedValue indexed)
void
setIndexMetaData(IndexMetaData indexMetaData)
VersionMetaData
setStrategy(String strategy)
VersionMetaData
setStrategy(VersionStrategy strategy)
String
toString()
-
Methods inherited from class org.datanucleus.metadata.MetaData
addExtension, addExtensions, getExtensions, getMetaDataManager, getNoOfExtensions, getParent, getValueForExtension, getValuesForExtension, hasExtension, isInitialised, isPopulated, isUsed, removeExtension, setExtensions, setParent
-
-
-
-
Field Detail
-
versionStrategy
protected VersionStrategy versionStrategy
strategy for generating the version.
-
columnName
protected String columnName
column name
-
columnMetaData
protected ColumnMetaData columnMetaData
Contains the metadata for column.
-
indexMetaData
protected IndexMetaData indexMetaData
IndexMetaData for the version column. TODO Drop this since it doesn't add to what we already have.
-
indexed
protected IndexedValue indexed
Indexed value.
-
fieldName
protected String fieldName
Name of the field that contains the version (if not generating a surrogate column).
-
-
Method Detail
-
initialise
public void initialise(ClassLoaderResolver clr)
Initialisation method. This should be called AFTER using the populate method if you are going to use populate. It creates the internal convenience arrays etc needed for normal operation.- Overrides:
initialise
in classMetaData
-
getColumnMetaData
public final ColumnMetaData getColumnMetaData()
-
setColumnMetaData
public void setColumnMetaData(ColumnMetaData columnMetaData)
Mutator for column MetaData.- Parameters:
columnMetaData
- The column MetaData to set.
-
newColumnMetaData
public ColumnMetaData newColumnMetaData()
Method to create a new ColumnMetaData, add it, and return it.- Returns:
- The Column metadata
-
getVersionStrategy
public final VersionStrategy getVersionStrategy()
-
setStrategy
public VersionMetaData setStrategy(VersionStrategy strategy)
-
setStrategy
public VersionMetaData setStrategy(String strategy)
-
getIndexMetaData
public final IndexMetaData getIndexMetaData()
-
setIndexMetaData
public final void setIndexMetaData(IndexMetaData indexMetaData)
-
newIndexMetaData
public IndexMetaData newIndexMetaData()
Method to create a new Index metadata, add it, and return it.- Returns:
- The Index metadata
-
getColumnName
public String getColumnName()
-
setColumnName
public VersionMetaData setColumnName(String columnName)
-
getIndexed
public IndexedValue getIndexed()
-
setIndexed
public VersionMetaData setIndexed(IndexedValue indexed)
-
getFieldName
public final String getFieldName()
-
setFieldName
public VersionMetaData setFieldName(String fieldName)
-
-