JDBC pegar id de um elemento antes de comita-lo

1 resposta
kabafano

Minha situação é a seguinte:
-tenho um objeto o qual a sua pk é um campo auto incremento
-tenho outro objeto o qual a sua pk possui o mesmo valor do campo au to incremento citado acima.
-Estou realizando isso dentro de uma transação

Dúvida:
-Como fazer para pegar o id desse elemento, para adicionar esse valor no segundo objeto, antes de comitar a transação, apenas dando o execute no resultSet?

código do método utilizado:

con = databaseCreator.getConnection();
			con.setAutoCommit(false);
			stat = con.prepareStatement(PropertiesReader.getValue(
					"user.insert", path, PropertiesReader.DATABASEQUERIES));
			stat.setString(1, user.getEmail());
			stat.setString(2, user.getPassword());
			stat.setString(3, user.getName());
			stat.setBytes(4, null);
			stat.execute();

                         // isso aqui foi uma tentativa frustrada 
			res =  stat.getGeneratedKeys();
			
			stat2 = con.prepareStatement(PropertiesReader.getValue(
					"house.insert", path, PropertiesReader.DATABASEQUERIES));
			// é desse ID que está a minha dúvida
                        stat2.setInt(1, user.getId());
			stat2.setBytes(2, null);
			stat2.setBoolean(3, user.getHouse().isPrivateHouse());
			stat2.execute();
			
			con.commit();

		} catch (SQLException e) {
			if (con != null) {
				con.rollback();
			}
		} finally {
			stat.close();
		}

Abraços ;D

1 Resposta

kabafano
Consegui, era parecido com o que eu estava fazendo <img src="https://cdn.jsdelivr.net/gh/twitter/twemoji@14/assets/72x72/s.pngmiley.png?v=9" title=":smiley:" class="emoji" alt=":smiley:">

res = stat.getGeneratedKeys();

int userID = 0;

if (res.next()) {

userID = res.getInt(1);

}

abraços

Criado 7 de janeiro de 2011
Ultima resposta 14 de jan. de 2011
Respostas 1
Participantes 1