【发布时间】:2019-08-01 13:44:40
【问题描述】:
我想在执行 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();
【问题讨论】:
-
“如何使用 JPA 将 DELETE 和 SELECT 语句作为一个查询执行?” 不可能的简短回答,
DELETE和SELECT在 MySQL 中遵循不同的代码路径,即你能做的最好的就是开始TRANSACTION -
你想要什么是可能的,它被称为“SQL 注入”,我 100% 同意 @Raymond Nijland 的评论
-
"我想在执行 DELETE 语句之前得到 SELECT 语句结果" 那么先在代码中执行
SELECT然后DELETEjava 代码将“阻塞”(主/当前线程)并首先等待结果。 ... -
“你想要什么是可能的,它被称为“SQL 注入”,” 不知道你为什么在这里提到“SQL 注入”@EduardoEljaiek 但确实你必须处理
createNativeQuery(..)使用时要小心.. -
也许如果您分享最终目标是什么,我们可以提供更多帮助。您是说要重新使用 select 语句来驱动删除请求吗?或者一般来说,您是否尝试共享/重用临时表?