Getting inserted ID after INSERT ... SELECT on Oracle
java.sql.Connection.prepareStatement(java.lang.String, int) interface is clear
Creates a default PreparedStatement object that has the capability to retrieve auto-generated keys
So you are using The wrong method. Try
return con.prepareStatement( "insert into Person (Name) select 'Bob' from dual", Statement.RETURN_GENERATED_KEYS);
instead