mysql - Hibernate delete with joins with joins without using IN 不使用 IN

标签 mysql sql hibernate

我有以下有效的查询,但它太慢了,因为它正在使用 IN:

_session.CreateQuery(@"
    delete OrderItem oi
    where oi in
         (select i
          from OrderItem i
          where i.Product.Id = :productId
          and i.Order.Company.Id = :companyId
          and i.Order.Campaign.Id :campaignId
          and i.Order.OrderStatus = :orderStatus)
    ")
    .SetParameter("productId", productId)
    .SetParameter("companyId", companyId)
    .SetParameter("campaignId", campaignId)
    .SetParameter("orderStatus", orderStatus)
    .ExecuteUpdate();

有没有一种方法可以使用 native 查询,您可以简单地使用连接进行删除,例如:

DELETE posts
FROM posts
INNER JOIN projects ON projects.project_id = posts.project_id
WHERE projects.client_id = :client_id

最佳答案

是的。使用 Session.createSQLQuery()并且您可以使用纯 SQL。

关于mysql - Hibernate delete with joins with joins without using IN 不使用 IN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18413282/

相关文章:

mysql - 使用 MySQL 和 Yesod 的持久语法错误

mysql - 来自 3 个不同表的 SQL 查询

mysql - 如何将 SQL 查询的输出连接成一个字符串

sql - 物化 View 与表 : What are the advantages?

sql - 在 ID 依赖的两个表中插入一条记录

hibernate - 如何将Hibernate和Solr集成在一起?

java - 取消 SQL 字符串引号的方法

VS 2015中没有出现Mysql数据库选项

日期范围内的 SQL 分割数

java - hibernate/Ehcache : evicting collections from 2nd level cache not synchronized with other DB reads