如何使用JPA将DELETE和SELECT语句作为一个查询执行?

时间:2019-08-01 13:44:40

标签: java mysql sql jpa

我想在执行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();

1 个答案:

答案 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();