Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,7 @@ public class GeneratedValuesHelper {
* Reads the {@link EntityPersister#getGeneratedProperties(EventType) generated values}
* for the specified {@link ResultSet}.
*
* @param statement The prepared statement the result set was generated from
* @param resultSet The result set from which to extract the generated values
* @param persister The entity type which we're reading the generated values for
* @param wrapperOptions The session
Expand All @@ -79,6 +80,7 @@ public class GeneratedValuesHelper {
* @throws HibernateException Indicates a problem reading back a generated value
*/
public static GeneratedValues getGeneratedValues(
PreparedStatement statement,
ResultSet resultSet,
EntityPersister persister,
EventType timing,
Expand All @@ -100,6 +102,7 @@ public static GeneratedValues getGeneratedValues(

final GeneratedValuesImpl generatedValues = new GeneratedValuesImpl( generatedProperties );
final Object[] results = readGeneratedValues(
statement,
resultSet,
persister,
mappingProducer,
Expand All @@ -125,6 +128,7 @@ public static GeneratedValues getGeneratedValues(
* Utility method that reads the generated values from the specified {@link ResultSet}
* using the {@link JdbcValuesMappingProducer} provided in input.
*
* @param statement the prepared statement that the result set was generated from
* @param resultSet the result set containing the generated values
* @param persister the current entity persister
* @param mappingProducer the mapping producer to use when reading generated values
Expand All @@ -133,23 +137,18 @@ public static GeneratedValues getGeneratedValues(
* @return an object array containing the generated values, order is consistent with the generated model parts list
*/
private static Object[] readGeneratedValues(
PreparedStatement statement,
ResultSet resultSet,
EntityPersister persister,
JdbcValuesMappingProducer mappingProducer,
SharedSessionContractImplementor session) {
final ExecutionContext executionContext = new BaseExecutionContext( session );

final DirectResultSetAccess directResultSetAccess;
try {
directResultSetAccess = new DirectResultSetAccess(
session,
(PreparedStatement) resultSet.getStatement(),
resultSet
);
}
catch (SQLException e) {
throw new HibernateException( "Could not retrieve statement from generated values result set", e );
}
final DirectResultSetAccess directResultSetAccess = new DirectResultSetAccess(
session,
statement,
resultSet
);

final JdbcValues jdbcValues = new JdbcValuesResultSetImpl(
directResultSetAccess,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -68,16 +68,16 @@ protected void bindParameters(Object entity, PreparedStatement ps, SharedSession
@Deprecated( forRemoval = true, since = "6.5" )
protected Object extractGeneratedValues(ResultSet resultSet, SharedSessionContractImplementor session)
throws SQLException {
final GeneratedValues generatedValues = extractReturningValues( resultSet, session );
final GeneratedValues generatedValues = extractReturningValues((PreparedStatement) resultSet.getStatement(), resultSet, session );
return generatedValues.getGeneratedValue( persister.getIdentifierMapping() );
}

/**
* Extract the generated key value from the given result set after execution of {@link #getSelectSQL()}.
*/
private GeneratedValues extractReturningValues(ResultSet resultSet, SharedSessionContractImplementor session)
private GeneratedValues extractReturningValues(PreparedStatement statement, ResultSet resultSet, SharedSessionContractImplementor session)
throws SQLException {
return getGeneratedValues( resultSet, persister, getTiming(), session );
return getGeneratedValues( statement, resultSet, persister, getTiming(), session );
}

@Override
Expand Down Expand Up @@ -118,7 +118,7 @@ public GeneratedValues performMutation(

final ResultSet resultSet = session.getJdbcCoordinator().getResultSetReturn().extract( idSelect, idSelectSql );
try {
return extractReturningValues( resultSet, session );
return extractReturningValues( idSelect, resultSet, session );
}
catch (SQLException e) {
throw jdbcServices.getSqlExceptionHelper().convert(
Expand Down Expand Up @@ -174,7 +174,7 @@ public final GeneratedValues performInsertReturning(String sql, SharedSessionCon
bindParameters( binder.getEntity(), idSelect, session );
ResultSet resultSet = jdbcCoordinator.getResultSetReturn().extract( idSelect, selectSQL );
try {
return extractReturningValues( resultSet, session );
return extractReturningValues( idSelect, resultSet, session );
}
finally {
jdbcCoordinator.getLogicalConnection().getResourceRegistry().release( resultSet, idSelect );
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ public GeneratedValues performMutation(
try {
final ResultSet resultSet = preparedStatement.getGeneratedKeys();
try {
return getGeneratedValues( resultSet, persister, getTiming(), session );
return getGeneratedValues( preparedStatement, resultSet, persister, getTiming(), session );
}
catch (SQLException e) {
throw jdbcServices.getSqlExceptionHelper().convert(
Expand Down Expand Up @@ -170,7 +170,7 @@ public GeneratedValues executeAndExtractReturning(
try {
final ResultSet resultSet = preparedStatement.getGeneratedKeys();
try {
return getGeneratedValues( resultSet, persister, getTiming(), session );
return getGeneratedValues( preparedStatement, resultSet, persister, getTiming(), session );
}
catch (SQLException e) {
throw jdbcServices.getSqlExceptionHelper().convert(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ protected GeneratedValues executeAndExtractReturning(

final ResultSet resultSet = jdbcCoordinator.getResultSetReturn().execute( preparedStatement, sql );
try {
return getGeneratedValues( resultSet, persister, getTiming(), session );
return getGeneratedValues( preparedStatement, resultSet, persister, getTiming(), session );
}
catch (SQLException e) {
throw jdbcServices.getSqlExceptionHelper().convert(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ public GeneratedValues executeAndExtractReturning(

ResultSet resultSet = jdbcCoordinator.getResultSetReturn().execute( preparedStatement, sql );
try {
return getGeneratedValues( resultSet, persister, getTiming(), session );
return getGeneratedValues( preparedStatement, resultSet, persister, getTiming(), session );
}
catch (SQLException e) {
throw jdbcServices.getSqlExceptionHelper().convert(
Expand Down
Loading