JPA:使用em.createNativeQuery插入或更新后检索自动生成的键

时间:2018-07-26 07:25:05

标签: java jpa entitymanager

使用EntityManger的createNativeQuery方法发出INSERT / UPDATE查询后,是否有任何标准的方法来检索自动生成的列值?

我正在针对Oracle DB 11.2和最新的oracle JDBC驱动程序使用EclipseLink 2.6.5。

1 个答案:

答案 0 :(得分:0)

如果我很好理解,您需要在INSERT进行过本机查询之后自动生成ID。 一种简单的解决方案是使用q.getSingleResults()

此代码可以为您提供帮助:

Query q = em.createNativeQuery(insertSql);
BigInteger id = (BigInteger) q.getSingleResult();
long id = id.longValue();

在一般实体中,在提交事务之后,在执行持久/合并/本机查询等之后可用。 EJB,Spring JPA存储库和Hibernate自动管理事务,无论如何,您都必须确保事务提交已经完成。