Skip to content

Commit

Permalink
HHH-8921 in-memory value generation (INSERT) only works if
Browse files Browse the repository at this point in the history
hibernate.id.new_generator_mappings is enabled
  • Loading branch information
brmeyer committed Feb 7, 2014
1 parent 66392f1 commit 8fe16b3
Showing 1 changed file with 16 additions and 10 deletions.
Expand Up @@ -3653,7 +3653,9 @@ else if ( ! isModifiableEntity( entry ) ) {

public Serializable insert(Object[] fields, Object object, SessionImplementor session)
throws HibernateException {

// apply any pre-insert in-memory value generation
preInsertInMemoryValueGeneration( fields, object, session );

final int span = getTableSpan();
final Serializable id;
if ( entityMetamodel.isDynamicInsert() ) {
Expand All @@ -3676,15 +3678,7 @@ public Serializable insert(Object[] fields, Object object, SessionImplementor se

public void insert(Serializable id, Object[] fields, Object object, SessionImplementor session) {
// apply any pre-insert in-memory value generation
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] );
}
}
}
preInsertInMemoryValueGeneration( fields, object, session );

final int span = getTableSpan();
if ( entityMetamodel.isDynamicInsert() ) {
Expand All @@ -3701,6 +3695,18 @@ public void insert(Serializable id, Object[] fields, Object object, SessionImple
}
}
}

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
Expand Down

0 comments on commit 8fe16b3

Please sign in to comment.