Java 如何在JDBC中获取id_用户(主键())

Java 如何在JDBC中获取id_用户(主键()),java,oracle,hibernate,jdbc,Java,Oracle,Hibernate,Jdbc,我想在主表和明细表中插入两行 id自动递增的主表和明细表 CREATE TABLE MI_User ( id_user NUMBER(11) NOT NULL, age NUMBER(3), name_user varchar2(128), constraint USER_PK PRIMARY KEY (id_user)); CREATE TABLE Friends ( id_friend NUMBER(11) not null, name VA

我想在主表和明细表中插入两行

id自动递增的主表和明细表

CREATE TABLE MI_User (
    id_user NUMBER(11) NOT NULL,
    age NUMBER(3),
    name_user varchar2(128),
    constraint USER_PK PRIMARY KEY (id_user));

CREATE TABLE Friends (
    id_friend NUMBER(11) not null,
    name VARCHAR2(64),
        id_user NUMBER(11) NOT NULL,
    constraint FRIEND_PK PRIMARY KEY (id_friend)
);
模型类包括:

public class User {
    private String id;
    private Integer age;
    private String name;
    private ArrayList<Friend> friends;
}

public class Friend {
    private Long id_user;
    private String name;
}
我尝试使用JDB插入:

conn = DriverManager
                    .getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr");
            ps = conn
                    .prepareStatement("INSERT INTO MI_USER (BALANCE, AGE, NAME_USER, GENDER, COMPANY, EMAIL, ADDRESS)\n" +
                            "    VALUES (?, ?, ?, ?, ?, ?, ?)");
            ps.setDouble(1, user.getDoubleBallans());
            ps.setInt(2, user.getAge());
            ps.setString(3, user.getName());
            ps.executeUpdate();

如何获取用户id并将行插入详细信息表?

我认为您可以使用
ps.getGeneratedKeys()
方法并发送
语句。将生成的关键字作为
conn.prepareStatement()
方法中的第二个参数返回。

而且链接的问题对于Oracle来说也没有答案,因为在Oracle上执行此操作时会遇到一些额外的问题,请参见,例如,您当前的答案稍微好一点,但对于Oracle实际上并不正确,请参见我之前评论中的链接。您对JDBC或Hibernate对此问题的答案感兴趣吗?
conn = DriverManager
                    .getConnection("jdbc:oracle:thin:@localhost:1521:xe", "hr", "hr");
            ps = conn
                    .prepareStatement("INSERT INTO MI_USER (BALANCE, AGE, NAME_USER, GENDER, COMPANY, EMAIL, ADDRESS)\n" +
                            "    VALUES (?, ?, ?, ?, ?, ?, ?)");
            ps.setDouble(1, user.getDoubleBallans());
            ps.setInt(2, user.getAge());
            ps.setString(3, user.getName());
            ps.executeUpdate();