java_Mysql e Last_insert_id();

Olá galera… estou com um problema seríssimo…
Tenho 4 tabelas relacionadas… insiro em uma preciso pegar então o último id inserido (auto incremet) e inserir na fk da outra tabela; já fiz o seguinte:

/**INSERE NA TABELA DOC - 3 **/ == linha 168

                    /**INSERE NA TABELA DOC  - 3  **/
        	   String sql3 = "INSERT INTO documento (NOME_DOC, CAMINHO_DOC) values (?, ?)";
        	   PreparedStatement stmt3 = con.prepareStatement(sql3);	
        	   stmt3.setString(1, tag);
        	   stmt3.setString(2, CAMINHO_ARQUIVO);
        	   stmt3.execute();
        	   stmt3.close();
        	   String sqlaux3 = "select last_insert_id() from documento";
        	 
        	   
        	   /**INSERE NA TABELA RADICAL**/
        	   String sql = "INSERT INTO radical (NOME_RADICAL) values (?)";
        	   PreparedStatement stmt = con.prepareStatement(sql);	   
        	   stmt.setString(1, radical);
        	   stmt.execute();
        	   stmt.close();
        	   String sqlaux = "select last_insert_id() from radical";
        	           	   
        	   /**INSERE NA TABELA TAG   -  1  **/
        	   String sql1 = "INSERT INTO tag (NOME_TAG, FK_ID_RADICAL) values (?, ?)";
        	   PreparedStatement stmt1 = con.prepareStatement(sql1);	   
        	   stmt1.setString(1, tag);
        	   stmt1.setString(2, sqlaux);
        	   stmt1.execute();
        	   stmt1.close();
        	   String sqlaux1 = "select last_insert_id() from tag";
        	   
        	   /**INSERE NA TABELA TAG_DOC   -  2  **/
        	   String sql2 = "INSERT INTO tag_doc (ID_DOC, ID_TAG) values (?, ?)";
        	   PreparedStatement stmt2 = con.prepareStatement(sql2);	   
        	   stmt2.setString(1, sqlaux3);
        	   stmt2.setString(2, sqlaux1);
        	   stmt2.execute();
        	   stmt2.close();

mas dá o seguinte erro:

Exception in thread "main" java.sql.SQLException: Incorrect integer value: 'select last_insert_id() from documento' for column 'ID_DOC' at row 1
	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566)
	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498)
	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959)
	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113)
	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568)
	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113)
	at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1364)
	at principal.Histograma.main(Histograma.java:200)

preciso super urgente… nó… to quebrando a cabeça faz maior tempão!!!

valew gente

select VALOR from TABELA WHERE VALOR = (SELECT MAX(VALOR) FROM TABELA);

o que seria esse VALOR?

VALOR é a coluna da qual você deseja obter o valor.
Considerando que essa coluna seja ID:

SELECT id FROM TABELA WHERE id = (SELECT MAX(id) FROM TABELA);

SELECT --> comando
id --> coluna
TABELA --> tabela em questão
WHERE --> cláusula
MAX() --> função que retorna o maior valor (sendo auto increment, será o último inserido)

continua dando erro no mesmo smt1.execute();

Exception in thread "main" java.sql.SQLException: Incorrect integer value: 'SELECT ID_DOC FROM documento WHERE ID_DOC = (SELECT MAX(ID_DOC) FROM documento)' for column 'FK_ID_RADICAL' at row 1 at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1075) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3566) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3498) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1959) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2113) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2568) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2113) at com.mysql.jdbc.PreparedStatement.execute(PreparedStatement.java:1364) at principal.Histograma.main(Histograma.java:207)

O erro retornado é referente ao tipo de dado. O dado ID_DOC é do mesmo tipo primitivo que o campo FK_ID_RADICAL?

sim… é sim…
bom… não sei c estou certa tb mas axo q o erro mesmo é a questão de ele estar recebendo uma string

String sqlaux3 = "select last_insert_id() from documento";

e ele teria q passar um int aki q é o id… mas pelo teste q eu fiz ele tá passando exatamente a string select last_insert_id() from documento

stmt2.setString(1, sqlaux3);

saca???

Olha, por estas e outras que sou muito a favor das stored procedures, cursores, functions e triggers…
Com uma stored procedure você faria tudo isso sem qualquer problema e, principalmente, ganharia tempo e performance…
De qualquer maneira, tente executar o select max(x) e colocar o valor em uma variável, para depois chamar o método stmt2.setString(1, ddd);