How to get returning ID in JPA after native query insert

far*_*eed 4 postgresql hibernate jpa

I have the following code in JPA to return an auto generated ID after inserting using native query:

Query q = em.createNativeQuery("insert into .... returning ID", Long.class);
q.executeUpdate();
Run Code Online (Sandbox Code Playgroud)

However, I'm getting the following error:

A result was returned when none was expected
Run Code Online (Sandbox Code Playgroud)

far*_*eed 6

好的,那很容易。我刚刚使用了q.getSingleResults(),效果很好!

Query q = em.createNativeQuery(sql);
BigInteger biid = (BigInteger) q.getSingleResult();
long id = biid.longValue();
Run Code Online (Sandbox Code Playgroud)

  • 在 MySQL 我使用: long lastId = ((BigInteger) entityManager.get().createNativeQuery("SELECT LAST_INSERT_ID()").getSingleResult()).longValue(); (2认同)
  • 在 MSSQL 中,我在 BigInteger biid = (BigInteger) q.getSingleResult(); 行上收到“org.hibernate.exception.GenericJDBCException:无法提取 ResultSet”; (2认同)