0

使用 Open JPA 2.0,数据库为 DB2 9.7。我想创建一个实体,其中包括作为主键的 ID 和自动生成的身份列,在创建实体后我需要显示生成的 ID。为此,在持久化实体之后,我调用了 entity.getId()。在数据库中,我看到下面的查询正在执行

select ID from final table
     (INSERT INTO WEB.USER (NAME, LOCATION) VALUES (?, ?))

是否有任何替代/更好的方法来创建实体并返回生成的 ID?我想避免"Select ID from final table",因为这预计会对性能产生影响。

4

2 回答 2

0

这就是您从 DB2 检索自动生成的 ID 的方式,对此您无能为力。其他数据库通常需要额外的 SQL 查询,因此使用 DB2 实际上更好,它会立即返回 ID。我认为没有更快的方法可以做到这一点。

查看OPENJPA-736此优化的实施位置。

于 2012-10-18T17:37:31.717 回答
0

我正在使用数据库序列 ( @SequenceGenerator) 来避免“从最终表中选择 ID”。这工作得很好,@TableGenerator也可以解决这个问题。

于 2012-11-20T19:19:34.643 回答