Kau*_*tha -1 java postgresql hibernate
我有一个表,其行“id”(主键)默认设置为 PostgreSQL 中的串行。我通过调用插入到这一行
session.getCurrentSession().createSQLQuery("some insert query")
Run Code Online (Sandbox Code Playgroud)
没有在 id 中添加任何值,因为它默认设置为串行。
如何检索刚刚插入的行的“id”?
JDBC 语句可以返回生成的键。例如,如果表中有一个id类型serial(可能是 PK)的列在下面的插入 SQL 中没有提到,则可以通过以下方式获得该列的生成值:
PreparedStatement s = connection.createStatement
("INSERT INTO my_table (c,d) VALUES (1,2)",
Statement.RETURN_GENERATED_KEYS);
s.executeUpdate();
ResultSet keys = s.getGeneratedKeys();
int id = keys.getInt(1);
Run Code Online (Sandbox Code Playgroud)
这比稍后发送第二个查询以获取序列值或最大列值要快。此外,根据情况,这两种其他解决方案可能不是线程安全的。
| 归档时间: |
|
| 查看次数: |
7702 次 |
| 最近记录: |