HHH-8921 in-memory value generation (INSERT) only works if
hibernate.id.new_generator_mappings is enabled
This commit is contained in:
parent
66392f19d0
commit
8fe16b3519
|
@ -3653,6 +3653,8 @@ public abstract class AbstractEntityPersister
|
||||||
|
|
||||||
public Serializable insert(Object[] fields, Object object, SessionImplementor session)
|
public Serializable insert(Object[] fields, Object object, SessionImplementor session)
|
||||||
throws HibernateException {
|
throws HibernateException {
|
||||||
|
// apply any pre-insert in-memory value generation
|
||||||
|
preInsertInMemoryValueGeneration( fields, object, session );
|
||||||
|
|
||||||
final int span = getTableSpan();
|
final int span = getTableSpan();
|
||||||
final Serializable id;
|
final Serializable id;
|
||||||
|
@ -3676,15 +3678,7 @@ public abstract class AbstractEntityPersister
|
||||||
|
|
||||||
public void insert(Serializable id, Object[] fields, Object object, SessionImplementor session) {
|
public void insert(Serializable id, Object[] fields, Object object, SessionImplementor session) {
|
||||||
// apply any pre-insert in-memory value generation
|
// apply any pre-insert in-memory value generation
|
||||||
if ( getEntityMetamodel().hasPreInsertGeneratedValues() ) {
|
preInsertInMemoryValueGeneration( fields, object, session );
|
||||||
final InMemoryValueGenerationStrategy[] strategies = getEntityMetamodel().getInMemoryValueGenerationStrategies();
|
|
||||||
for ( int i = 0; i < strategies.length; i++ ) {
|
|
||||||
if ( strategies[i] != null && strategies[i].getGenerationTiming().includesInsert() ) {
|
|
||||||
fields[i] = strategies[i].getValueGenerator().generateValue( (Session) session, object );
|
|
||||||
setPropertyValue( object, i, fields[i] );
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final int span = getTableSpan();
|
final int span = getTableSpan();
|
||||||
if ( entityMetamodel.isDynamicInsert() ) {
|
if ( entityMetamodel.isDynamicInsert() ) {
|
||||||
|
@ -3702,6 +3696,18 @@ public abstract class AbstractEntityPersister
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void preInsertInMemoryValueGeneration(Object[] fields, Object object, SessionImplementor session) {
|
||||||
|
if ( getEntityMetamodel().hasPreInsertGeneratedValues() ) {
|
||||||
|
final InMemoryValueGenerationStrategy[] strategies = getEntityMetamodel().getInMemoryValueGenerationStrategies();
|
||||||
|
for ( int i = 0; i < strategies.length; i++ ) {
|
||||||
|
if ( strategies[i] != null && strategies[i].getGenerationTiming().includesInsert() ) {
|
||||||
|
fields[i] = strategies[i].getValueGenerator().generateValue( (Session) session, object );
|
||||||
|
setPropertyValue( object, i, fields[i] );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Delete an object
|
* Delete an object
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Reference in New Issue