Class AbstractHibernateEntity
- All Implemented Interfaces:
EntityReference
,Entity
,EntityImplementor
- Direct Known Subclasses:
AbstractDirtyCheckingEntity
,AbstractSessionOnlyEntity
Entity
instances (see JavassistEntityPojoFactory
Used for XML based entities.-
Nested Class Summary
Nested classes/interfaces inherited from interface ch.tocco.nice2.persist.core.api.entity.Entity
Entity.State
-
Field Summary
Modifier and TypeFieldDescriptionprotected EntityContext
protected EntityInterceptor
protected final org.slf4j.Logger
protected boolean
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionvoid
delete()
Delete the entity.boolean
Returns all field names for fields with values differing from initially loaded value in current transaction.abstract EntityInterceptor
org.slf4j.Logger
Provides access to the entity's logger.Get the manager that manages this entity.getModel()
Get the entity model.getRelatedEntity
(String relName) Returns the single related entity for the given relation name, or throws.@Nullable Entity
getRelatedEntityOrNull
(String relName) Returns the single related entity for the given relation name, null if none, or throws.getTouchedProperties
(Function<String, Boolean> filter) TypedValue
<?> getValue
(FieldModel field) Get the value and (nominal) type of a field.<T> T
getValue
(FieldModel fieldModel, Type<T> type) Get the value of a field as the specified type, converting the value if neccessary.<T> T
getValue
(FieldModel field, Class<T> targetType) Get the value of a field, converting it if necessary.TypedValue
<?> Get the value and (nominal) type of a field.<T> T
Get the value of a field as the specified type, converting the value if neccessary.<T> T
Get the value of a field, converting it if necessary.Get all values of the entity as a map.protected <T> T
internalGetValue
(String fieldName, Class<T> type) protected void
internalSetValue
(String field, Object value) boolean
isFieldChanged
(String field) Returns true if the current field value differs from initially loaded value in current transaction.boolean
isFieldTouched
(String field) boolean
Determine whether the entity is updatable.void
joinTx()
Joins the current transaction.void
Mark an entity as deleted.protected String
resolveField
(String fieldName, EntityInterceptor.AccessType accessType) void
setAutoFieldsDisabled
(boolean disabled) Disables fields listedEntityAutoField
(like version, update-user and -timestamps).void
setEntityContext
(EntityContext entityContext) void
Set the value of a field.abstract void
syncInverseCollection
(RelationModel relationModel, Entity entity, boolean added) protected Entity
Returns the proxy instance for this entity, if one exists in the current session.toString()
validate
(boolean asynchronous) Validates this entity by running the validators of this entity's fields.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
Methods inherited from interface ch.tocco.nice2.persist.core.api.entity.Entity
getBool, getDate, getDateTime, getDecimal, getDouble, getFloat, getInt, getKey, getLong, getOldValue, getShort, getState, getString, getTime, hasKey, requireBool, requireDate, requireDateTime, requireDecimal, requireDouble, requireFloat, requireInt, requireKey, requireLong, requireShort, requireString, requireTime, requireValue, requireValue, requireValue, requireValue, requireValue, requireValue, resolve, validate
-
Field Details
-
logger
protected final org.slf4j.Logger logger -
entityContext
-
entityInterceptor
-
wasDeleted
protected boolean wasDeleted
-
-
Constructor Details
-
AbstractHibernateEntity
public AbstractHibernateEntity()
-
-
Method Details
-
setEntityContext
-
toString
-
getInnerInterceptor
-
internalGetValue
-
internalSetValue
-
thisInstanceOrProxyIfAvailable
Returns the proxy instance for this entity, if one exists in the current session. If a proxy exists, it should always be passed to the listeners instead of the actual instance. Otherwise unexpected side effects may happen when there are 2 different instances for the same entity. -
resolveField
-
setValue
Description copied from interface:Entity
Set the value of a field.In the current implementation no content validation is made on this method call - other than null on a non-nullable field. Validation happens when storing, when all values have been set.
The value must either be in the correct data type, or convertible. To be convertible there must be a
ch.tocco.nice2.types.spi.Converter
contributed. Note that not all kinds of conversions that seem obvious at first are registered, for example there is no string to integer converter and thus a value like "" won't work and set 0 on an int field. Setting an int 0 on a long field works though because there is an int to long type converter. -
getValue
Description copied from interface:Entity
Get the value and (nominal) type of a field. If the value of the specified field isnull
, typed value with the field type and an associated value ofnull
is returned.- Specified by:
getValue
in interfaceEntity
- Parameters:
field
- The name of the field- Returns:
- A
TypedValue
.
-
getValue
Description copied from interface:Entity
Get the value of a field, converting it if necessary. -
getValue
Description copied from interface:Entity
Get the value of a field as the specified type, converting the value if neccessary. -
getValue
Description copied from interface:Entity
Get the value and (nominal) type of a field. If the underlying value isnull
, it returns the type associated with the value ofnull
.- Specified by:
getValue
in interfaceEntity
- Parameters:
field
- The name of the field- Returns:
- A
TypedValue
.
-
getValue
Description copied from interface:Entity
Get the value of a field, converting it if necessary. -
getValue
Description copied from interface:Entity
Get the value of a field as the specified type, converting the value if neccessary. -
delete
public void delete()Description copied from interface:Entity
Delete the entity. -
markDeleted
public void markDeleted()Description copied from interface:EntityImplementor
Mark an entity as deleted. This can be used when an entity is deleted directly using a SQL or HQL query to synchronize the state of the entity with the database. This will cause thatEntity.getState()
will returnEntity.State.PHANTOM
. This is mainly used internally. NormallyEntity.delete()
should be used.- Specified by:
markDeleted
in interfaceEntityImplementor
-
isFieldChanged
Description copied from interface:Entity
Returns true if the current field value differs from initially loaded value in current transaction.- Specified by:
isFieldChanged
in interfaceEntity
-
getChangedFields
Description copied from interface:Entity
Returns all field names for fields with values differing from initially loaded value in current transaction. Note: This method throws an UnauthorizedException when at least one changed field is not readable.- Specified by:
getChangedFields
in interfaceEntity
- See Also:
-
isFieldTouched
- Specified by:
isFieldTouched
in interfaceEntity
- Throws:
ModelException
-
getTouchedFields
- Specified by:
getTouchedFields
in interfaceEntity
-
getTouchedRelations
- Specified by:
getTouchedRelations
in interfaceEntity
- Returns:
- all touched relations, unmodifiableSet
-
getTouchedProperties
-
syncInverseCollection
public abstract void syncInverseCollection(RelationModel relationModel, Entity entity, boolean added) -
getRelatedEntity
Description copied from interface:Entity
Returns the single related entity for the given relation name, or throws.- Specified by:
getRelatedEntity
in interfaceEntity
- Parameters:
relName
- The relation name.- Returns:
- The single related entity, loaded eagerly.
- See Also:
-
getRelatedEntityOrNull
Description copied from interface:Entity
Returns the single related entity for the given relation name, null if none, or throws.Like
Entity.getRelatedEntity(java.lang.String)
but returnsnull
if none.- Specified by:
getRelatedEntityOrNull
in interfaceEntity
- Parameters:
relName
- The relation name.- Returns:
- The single related entity loaded eagerly, or
null
if none. - See Also:
-
joinTx
public void joinTx()Description copied from interface:Entity
Joins the current transaction. -
getValueMap
Description copied from interface:Entity
Get all values of the entity as a map.Changes to that map will not be reflected in the entity.
The data includes pk fields as well as nice-specific fields (version etc).
- Specified by:
getValueMap
in interfaceEntity
- Returns:
- A map containing all values of the entity (shallow copy, modifiable).
-
isUpdatable
public boolean isUpdatable()Description copied from interface:Entity
Determine whether the entity is updatable.- Specified by:
isUpdatable
in interfaceEntity
- Returns:
true
, if the entity is updatable,false
, if it's read-only.
-
getModel
Description copied from interface:Entity
Get the entity model.- Specified by:
getModel
in interfaceEntity
- Specified by:
getModel
in interfaceEntityReference
- Returns:
- The entity model.
-
getManager
Description copied from interface:Entity
Get the manager that manages this entity.- Specified by:
getManager
in interfaceEntity
-
getContext
- Specified by:
getContext
in interfaceEntity
-
setAutoFieldsDisabled
public void setAutoFieldsDisabled(boolean disabled) Description copied from interface:Entity
Disables fields listedEntityAutoField
(like version, update-user and -timestamps). Useful for background-tasks which update things which can be re-written when overwritten by someone else. Important: Use this only when you exactly know why you are doing it!- Specified by:
setAutoFieldsDisabled
in interfaceEntity
-
getAutoFieldsDisabled
public boolean getAutoFieldsDisabled()- Specified by:
getAutoFieldsDisabled
in interfaceEntity
- See Also:
-
validate
Description copied from interface:Entity
Validates this entity by running the validators of this entity's fields. Such validation includes business logic. Data type validation has been made way before, before setting the values on this entity object. Validators that throw a WARN level error may be ignored, which means they won't be run at all, and thus won't stop a persist operation. The DataOperator uses this functionality. The GUI can show a warning to the user, and he may change his input, or ignore the warning and submit again. If asynchronous is set to true, only validators that are deemed save for asynchronous validation (e.g. validation of an entity before everything is filled in / before listeners) are run. If it is set to false, all validators will be run. -
getLogger
public org.slf4j.Logger getLogger()Description copied from interface:Entity
Provides access to the entity's logger. This may be useful to report errors on certain operation on an entity.
-