【问题标题】:Difference between HQL delete query and session.delete()HQL 删除查询和 session.delete() 的区别
【发布时间】:2011-08-21 16:37:08
【问题描述】:

我对 Hibernate 很陌生,有一个问题。使用HQL查询删除对象和使用Session类的delete(...)方法删除对象有什么区别?

【问题讨论】:

    标签: java hibernate hql-delete


    【解决方案1】:

    Session.delete(...) 仅在您已经拥有对要删除的实体的引用时才有用。

    delete-by-query 对于根据特定条件删除多个对象很有用,这些对象可能以前没有加载到会话中。

    我相信 delete-by-query 实际上将每个实体加载到会话中并单独删除它们 - 如果我在这方面错了,请有人纠正我。

    【讨论】:

    • 但两者都使目标对象瞬态?
    • @Patrick:如果这些实体之前已经加载到会话中,是的
    • 另外两个对象引用了我要删除的对象(在集合中)。 Hibernate 可以删除这些引用还是我必须自己做?
    • 它将查询转换为本地查询并执行它。所以我认为不加载它们。一个重要的注意事项是它不尊重级联
    • 我指的是答案(最后一段)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-08
    • 1970-01-01
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 2016-05-20
    相关资源
    最近更新 更多