使用EntityManger的createNativeQuery方法发出INSERT / UPDATE查询后,是否有任何标准的方法来检索自动生成的列值?
我正在针对Oracle DB 11.2和最新的oracle JDBC驱动程序使用EclipseLink 2.6.5。
答案 0 :(得分:0)
如果我很好理解,您需要在INSERT
进行过本机查询之后自动生成ID。
一种简单的解决方案是使用q.getSingleResults()
此代码可以为您提供帮助:
Query q = em.createNativeQuery(insertSql);
BigInteger id = (BigInteger) q.getSingleResult();
long id = id.longValue();
在一般实体中,在提交事务之后,在执行持久/合并/本机查询等之后可用。 EJB,Spring JPA存储库和Hibernate自动管理事务,无论如何,您都必须确保事务提交已经完成。