【问题标题】:How to get id_user (primary key ()) in JDBCJDBC中如何获取id_user(主键())
【发布时间】:2017-01-06 14:54:37
【问题描述】:

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

具有自动递增 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;
}

有来自Hibernate的例子:

tx = session.beginTransaction();
User user = new User(name, age);
employeeID = (Integer) session.save(employee); 
tx.commit();

我尝试使用 JDBS 插入:

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_user并将行插入明细表?

【问题讨论】:

  • 您对这个问题的 JDBC 或 Hibernate 答案感兴趣吗?

标签: java oracle hibernate jdbc


【解决方案1】:

我认为您可以使用ps.getGeneratedKeys() 方法并将Statement.RETURN_GENERATED_KEYS 作为conn.prepareStatement() 方法中的第二个参数发送。

【讨论】:

  • 链接的问题也没有为 Oracle 提供答案,因为在 Oracle 上执行此操作时有一些额外的问题,请参阅例如 stackoverflow.com/questions/24136223/…
  • 您当前的答案稍好一些,但对于 Oracle 来说实际上并不正确,请参阅我之前评论中的链接。
猜你喜欢
  • 1970-01-01
  • 2022-11-03
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 2011-01-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多