【问题标题】:Getting generated identifier for JPA native insert query获取 JPA 本机插入查询的生成标识符
【发布时间】:2025-12-04 16:50:01
【问题描述】:

出于性能原因,我需要使用一些本机查询将新对象插入数据库。我有一个非常复杂的 JPA 持久层来管理我通常的实体读取和写入,我想使用这个持久层来运行本机查询。

我知道我需要 EntityManager#createNativeQuery(String) 和 Query#executeUpdate 方法来实现我的目标。

我目前的问题是我还想获取新插入行的生成标识符。我知道使用 JDBC 或 SpringPersistence 可以做到这一点,但有没有办法从 JPA 原生查询中获取这些标识符?

【问题讨论】:

    标签: java jpa orm persistence nativequery


    【解决方案1】:

    这通常是特定于数据库的,如果您可以使用 JDBC 来实现,那么您也可以使用 JPA 原生查询来实现。您基本上需要执行(特定于数据库的)额外查询来获取插入的 ID。

    【讨论】:

    • 例如我有插入查询并在方法中选择最后插入的 id。他们会在同一个事务中执行这些查询吗?请告诉我。