我使用以下代码在休眠(SQLQuery)上运行本机 sql 查询已被弃用。
private static int executeUpdate(String sql) {
int result = 0;
Session session = HibernateSessionFactory.getSession();
org.hibernate.Transaction tr = session.beginTransaction();
NativeQuery nativeQuery = session.createNativeQuery(sql);
int executeUpdate = nativeQuery.executeUpdate();
tr.commit();
return executeUpdate;
}
一切正常,但我希望同样的方法也返回最后插入元素的 id,我希望这种方式与表无关。
[[编辑]]
一种方法是传递一个本机查询,returning id
然后使用以下代码:
private static int executeUpdate(String sql) {
int result = 0;
List<HashMap<String, Object>> ret = new ArrayList<HashMap<String, Object>>();
Session session = HibernateSessionFactory.getSession();
org.hibernate.Transaction tr = session.beginTransaction();
NativeQuery nativeQuery = session.createNativeQuery(sql);
ret = nativeQuery.list();
tr.commit();
return Integer.parseInt(ret.get(0).get("id").toString());
}
能不能有别的办法?