Como posso utilizar o id capturado no primeiro insert e setar em um Objeto com PreparedStatement para fazer o segundo insert

Segue o código.

public void InserirPessoaFisica(PessoaFisica pf) throws SQLException {

	String sql1= "INSERT INTO tblPessoa(IdPessoaTipo) VALUES (1);";
	Connection conexao1 = (Connection) ConexaoFactory.Conection();
	PreparedStatement comando1 = conexao1.prepareStatement(sql1);
	comando1.executeUpdate();
	
	ResultSet rs =comando1.getGeneratedKeys();
	//long val =  ((Number) rs.getObject(1)).intValue();	
	long id =0;
	
	if (rs.next()) {
		id =rs.getInt(1); 
	}
	System.out.println(id);//Imprime o código gerardo pelo primeiro insert sql1
	PessoaTipo pt = new PessoaTipo();
	pt.setIdPessoaTipo(id);
	String sql= "INSERT INTO tblPessoaFisica(nome,cpf,passaporte,DataNascimento,IdPessoaTipo) VALUES (?,?,?,?,?);";
	Connection conexao = (Connection) ConexaoFactory.Conection();
	PreparedStatement comando = conexao.prepareStatement(sql);
	comando.clearParameters();
	comando.setString(1, pf.getNome());
	comando.setString(2, pf.getCpf());
	comando.setString(3,pf.getPassaporte());
	comando.setDate(4, new Date (pf.getDataNascimento().getTimeInMillis()));
	comando.setNString(5, pf.getPessoaTipo().setIdPessoaTipo(id)); // aqui acontece o erro
	comando.executeUpdate();

Quem poder ajudar grato.

Boa tarde, poderia explicar melhor o que está sendo o seu problema?

Boa tarde viciato
eu gostaria de fazer o segundo insert com o Id gerado pelo primeiro insert não esto a conseguir passar como parametro nessa linha

comando.setNString(5, pf.getPessoaTipo().setIdPessoaTipo(id)); // aqui acontece o erro
comando.executeUpdate();
pq ela da um erro.

post o stack do erro.

Campelo.m Boa Tarde esse é o erro :
The method setNString(int, String) in the type PreparedStatement is not applicable for the arguments (int, void)

Veja que nesse erro o setNString espera um valor int e uma String, voce esta passando um int e um void.

Voce vai passar um valor para ser inserido no banco, nao bastaria passar somente o id?
comando.setNString(5, String.valueOf(id));

Ok Obrigado vou dar uma olhada
Novo erro

Quando faço o teste de inserir
public static void main(String[] args) {

	try {
		PessoaTipo pt = new PessoaTipo();
		pt.setIdPessoaTipo(1L);
		
		PessoaFisica pf = new PessoaFisica();
		pf.setNome("Magnolia");
		pf.setCpf("265098108");
		pf.setPassaporte("N00999");
		pf.setDataNascimento(Calendar.getInstance());
		pf.setPessoaTipo(pt);
		Negocios n = new Negocios();
		n.InserirPessoaFisica(pf);
		System.out.println("Deu certo");
	} catch (Exception e) {
		// TODO: handle exception
		e.printStackTrace();
	}
} 

13 // Id gerado pelo primeiro insert
com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column ‘IdPessoaTipo’ in ‘field list’…

O erro fala que a coluna IdPessoaTipo nao existe na tabela tblPessoaFisica.

Veja se o nome da coluna esta correto