我想在执行DELETE语句之前获取SELECT语句的结果,但是它们都使用在开头创建的相同临时表,因此我无法使用 query.getResultList()和 query .executeUpdate()同时。还有其他办法吗?
CREATE TEMPORARY TABLE xyzToDelete SELECT xyz FROM ...
----
SELECT * FROM xyzToDelete
----
DELETE FROM <using xyzToDelete>
private String deleteXYZ;
----
<here I put sql file content into this string>
----
Query query = em.createNativeQuery(deleteXYZ);
query.executeUpdate();
答案 0 :(得分:0)
ACID问题。如果未完成,事务将回滚。 您应该将SELECT&DELETE分为两个事务。
您最好的选择是:
Query query = em.createNativeQuery(CREATE TABLE xyzToDelete SELECT xyz FROM SELECT * FROM xyzToDelete);
List<String> results = query.getResultlist();
Query query2 = em.createNativeQuery(DELETE FROM xyzToDelete);
List<String> changes = query.executeUpdate();