【发布时间】:2019-01-02 00:01:37
【问题描述】:
我使用以下代码在休眠 (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());
}
还有其他方法吗?
【问题讨论】:
标签: hibernate postgresql-9.5 hibernate-5.x nativequery hibernate-native-query