getGeneratedKeys () después de PreparedStatement.executeBatch ()

Quiero INSERT varias filas usando una PreparedStatement :

 ps = con.prepareStatement(query,PreparedStatement.RETURN_GENERATED_KEYS); for(Element e:listOfElements){ ps.setString(1,this.col_val_1); ps.setString(2,this.col_val_2); ps.setInt(3,this.col_val_3); ps.addBatch(); } ps.executeBatch(); ResultSet rs = ps.getGeneratedKeys(); 

En este punto, cuando espero obtener los PK generados para cada INSERT , obtengo esta SQLServerException :

 com.microsoft.sqlserver.jdbc.SQLServerException: The statement must be executed before any results can be obtained. 

Esperaba obtener un ResultSet con una fila por cada inserción realizada, para poder generar cada PK.

¿Estoy esperando mal? ¿Estoy haciendo algo mal? ¿Se puede hacer de una manera diferente utilizando la ejecución por lotes?

El soporte para getGeneratedKeys() en la ejecución por lotes es la implementación definida de acuerdo con la especificación JDBC. Lo más probable es que el controlador de SQL Server no lo admita para la ejecución por lotes.

Intenté buscar una statement explícita en el sitio de Microsoft, pero no pude encontrarla. Esta antigua publicación del foro (2007) en MSDN indica que no es compatible: http://social.msdn.microsoft.com/Forums/en-US/sqldataaccess/thread/6cbf5eea-e5b9-4519-8e86-f4b65ce3f8e1