code: public ResultSet executeWithKeys() {
          context = startContext(connection(), metadata, entity);
          try {
              PreparedStatement stmt = null;
              if (batches.isEmpty()) {
                  stmt = createStatement(true);
                  listeners.notifyInsert(entity, metadata, columns, values, subQuery);
  
                  listeners.preExecute(context);
                  stmt.executeUpdate();
                  listeners.executed(context);
              } else if (batchToBulk) {
                  stmt = createStatement(true);
                  listeners.notifyInserts(entity, metadata, batches);
  
                  listeners.preExecute(context);
                  stmt.executeUpdate();
                  listeners.executed(context);
              } else {
                  Collection<PreparedStatement> stmts = createStatements(true);
                  if (stmts != null && stmts.size() > 1) {
                      throw new IllegalStateException("executeWithKeys called with batch statement and multiple SQL strings");
                  }
                  stmt = stmts.iterator().next();
                  listeners.notifyInserts(entity, metadata, batches);
  
                  listeners.preExecute(context);
                  stmt.executeBatch();
                  listeners.executed(context);
              }
  
              final Statement stmt2 = stmt;
              ResultSet rs = stmt.getGeneratedKeys();
              return new ResultSetAdapter(rs) {
                  @Override
                  public void close() throws SQLException {
                      try {
                          super.close();
                      } finally {
                          stmt2.close();
                          reset();
                          endContext(context);
                      }
                  }
              };
          } catch (SQLException e) {
              onException(context, e);
              reset();
              endContext(context);
              throw configuration.translate(queryString, constants, e);
          }
      }
docs: Execute the clause and return the generated keys as a ResultSet
  
  @return result set with generated keys