Forse potresti usare
DatabaseMetaData databaseMetaData = connection.getMetaData();
databaseMetaData.getColumns(null, null, tableName, "%");
Restituisce una riga per ogni colonna della tabella.
In questo caso useresti il ResultSet
restituito stesso, non il suo ResultSetMetaData
.
Un vantaggio di questo approccio è che non interferisce con il blocco del database e le transazioni.