FileDocCategorySizeDatePackage
GetGeneratedKeysHelper.javaAPI DocHibernate 3.2.52897Wed Mar 22 10:38:56 GMT 2006org.hibernate.util

GetGeneratedKeysHelper

public final class GetGeneratedKeysHelper extends Object
author
Gavin King

Fields Summary
private static final Integer
RETURN_GENERATED_KEYS
private static final Method
PREPARE_STATEMENT_METHOD
private static final Method
GET_GENERATED_KEYS_METHOD
Constructors Summary
private GetGeneratedKeysHelper()

	
Methods Summary
public static java.sql.ResultSetgetGeneratedKey(java.sql.PreparedStatement ps)

		try {
			return ( ResultSet ) GET_GENERATED_KEYS_METHOD.invoke( ps, null );
		}
		catch ( InvocationTargetException ite ) {
			if ( ite.getTargetException() instanceof SQLException ) {
				throw ( SQLException ) ite.getTargetException();
			}
			else if ( ite.getTargetException() instanceof RuntimeException ) {
				throw ( RuntimeException ) ite.getTargetException();
			}
			else {
				throw new AssertionFailure( "InvocationTargetException extracting generated keys (JDBC3)", ite );
			}
		}
		catch ( IllegalAccessException iae ) {
			throw new AssertionFailure( "IllegalAccessException extracting generated keys (JDBC3)", iae );
		}
	
public static java.sql.PreparedStatementprepareStatement(java.sql.Connection conn, java.lang.String sql)

		try {
			int returnGeneratedKeysEnumValue = Statement.class
					.getDeclaredField( "RETURN_GENERATED_KEYS" )
					.getInt( PreparedStatement.class );
			RETURN_GENERATED_KEYS = new Integer( returnGeneratedKeysEnumValue );
			PREPARE_STATEMENT_METHOD = Connection.class.getMethod(
					"prepareStatement",
			        new Class[] { String.class, Integer.TYPE }
			);
			GET_GENERATED_KEYS_METHOD = Statement.class.getDeclaredMethod(
					"getGeneratedKeys",
			        null
			);
		}
		catch ( Exception e ) {
			throw new AssertionFailure( "could not initialize getGeneratedKeys() support", e );
		}
	
		Object[] args = new Object[] { sql, RETURN_GENERATED_KEYS } ;
		try {
			return ( PreparedStatement ) PREPARE_STATEMENT_METHOD.invoke( conn, args );
		}
		catch ( InvocationTargetException ite ) {
			if ( ite.getTargetException() instanceof SQLException ) {
				throw ( SQLException ) ite.getTargetException();
			}
			else if ( ite.getTargetException() instanceof RuntimeException ) {
				throw ( RuntimeException ) ite.getTargetException();
			}
			else {
				throw new AssertionFailure( "InvocationTargetException preparing statement capable of returning generated keys (JDBC3)", ite );
			}
		}
		catch ( IllegalAccessException iae ) {
			throw new AssertionFailure( "IllegalAccessException preparing statement capable of returning generated keys (JDBC3)", iae );
		}