Вы, кажется, в основном используете PostgreSQL. Полезно знать, что, поскольку версия драйвера JDBC PostgreSQL 8.4-701 , PreparedStatement#getGeneratedKeys()
полностью функциональна.
Вам нужно только подготовить оператор следующим образом, чтобы он мог вернуть ключи:
statement = connection.prepareStatement(SQL, Statement.RETURN_GENERATED_KEYS);
Итак, при необходимости обновите свой драйвер и исправьте способ подготовки заявления. Кстати, это относится и ко многим другим драйверам JDBC.
Совершенно другая альтернатива - полностью отказаться от простого JDBC, подняться на один уровень абстракции и погрузиться в «хороший» ол Hibernate или современный JPA. Они предлагают чисто объектно-ориентированный подход к обработке сущностей базы данных в Java без необходимости возиться с сгенерированными ключами и т.п. Все это прозрачно обрабатывается под крышками, и они поддерживают очень широкий спектр диалектов БД.