Package org.hibernate.id
Class SelectGenerator
- java.lang.Object
-
- org.hibernate.id.SelectGenerator
-
- All Implemented Interfaces:
Serializable,Generator,OnExecutionGenerator,BulkInsertionCapableIdentifierGenerator,Configurable,StandardGenerator,PostInsertIdentifierGenerator
public class SelectGenerator extends Object implements PostInsertIdentifierGenerator, BulkInsertionCapableIdentifierGenerator, StandardGenerator
A generator thatselects the just-inserted row to determine the column value assigned by the database. The correct row is located using a unique key of the entity, either:- the mapped NaturalId of the entity, or
- a property specified using the parameter named
"key".
This generator is intended for use with primary keys assigned by a database trigger or something similar, for example:
{@code- See Also:
NaturalId,UniqueKeySelectingDelegate, Serialized Form
-
-
Constructor Summary
Constructors Constructor Description SelectGenerator()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidconfigure(Type type, Properties parameters, ServiceRegistry serviceRegistry)Noop default implementation.String[]getReferencedColumnValues(Dialect dialect)A SQL expression indicating how to calculate the generated values when the mapped columns are included in the SQL statement.String[]getUniqueKeyPropertyNames(EntityPersister persister)The name of a property of the entity which may be used to locate the just-inserted row containing the generated value.booleanreferenceColumnsInSql(Dialect dialect)Determines if the columns whose values are generated are included in the column list of the SQLinsertorupdatestatement.-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface org.hibernate.id.BulkInsertionCapableIdentifierGenerator
determineBulkInsertionIdentifierGenerationSelectFragment, supportsBulkInsertionIdentifierGeneration
-
Methods inherited from interface org.hibernate.generator.Generator
generatesOnInsert, generatesOnUpdate, generatesSometimes
-
Methods inherited from interface org.hibernate.generator.OnExecutionGenerator
generatedOnExecution, getGeneratedIdentifierDelegate
-
Methods inherited from interface org.hibernate.id.PostInsertIdentifierGenerator
getEventTypes, writePropertyValue
-
-
-
-
Method Detail
-
configure
public void configure(Type type, Properties parameters, ServiceRegistry serviceRegistry)
Description copied from interface:PostInsertIdentifierGeneratorNoop default implementation. May be overridden by subtypes.- Specified by:
configurein interfaceConfigurable- Specified by:
configurein interfacePostInsertIdentifierGenerator- Parameters:
type- The id property type descriptorparameters- param values, keyed by parameter nameserviceRegistry- Access to service that may be needed.
-
getUniqueKeyPropertyNames
public String[] getUniqueKeyPropertyNames(EntityPersister persister)
Description copied from interface:OnExecutionGeneratorThe name of a property of the entity which may be used to locate the just-inserted row containing the generated value. Of course, the columns mapped by this property should form a unique key of the entity.The default implementation uses the
@NaturalIdproperty, if there is one.- Specified by:
getUniqueKeyPropertyNamesin interfaceOnExecutionGenerator
-
referenceColumnsInSql
public boolean referenceColumnsInSql(Dialect dialect)
Description copied from interface:OnExecutionGeneratorDetermines if the columns whose values are generated are included in the column list of the SQLinsertorupdatestatement. For example, this method should return:trueif the value is generated by calling a SQL function likecurrent_timestamp, orfalseif the value is generated by a trigger, bygenerated always as, or using a column default value.
- Specified by:
referenceColumnsInSqlin interfaceOnExecutionGenerator- Returns:
trueif the column is included in the column list of the SQL statement.
-
getReferencedColumnValues
public String[] getReferencedColumnValues(Dialect dialect)
Description copied from interface:OnExecutionGeneratorA SQL expression indicating how to calculate the generated values when the mapped columns are included in the SQL statement. The SQL expressions might be:- function calls like
current_timestampornextval('mysequence'), or - syntactic markers like
default.
- Specified by:
getReferencedColumnValuesin interfaceOnExecutionGenerator- Parameters:
dialect- The SQL dialect, allowing generation of an expression in dialect-specific SQL.- Returns:
- The column value to be used in the generated SQL statement.
- function calls like
-
-