当前位置: 首页 > 面试题库 >

是否可以从与HQL的许多关联中批量删除?

谷光誉
2023-03-14
问题内容

如果是这样,语法是什么?

假设我希望Foo的实例与Bar的所有实例都没有关联:在SQL中,它将简单地是:

delete from FOO_BAR_MAPPING
where FOO_ID = ?

在HQL中,我假设它会是这样的:

delete from Bar.foos foos
where foos.id = :id

(其中foos是Foo的映射集合)

但似乎是错误的,给出:

org.hibernate.hql.ast.QuerySyntaxException: Bar.foos is not mapped

使用HQL甚至可能吗?


问题答案:

据我所知,要回答您的特定问题,不,HQL是不可能的。

我认为您在这里混用了SQL和HQL。在SQL中,您确实可以“删除”记录,当然,hibernate也会最终做到这一点。但是,Hibernate /
HQL是基于面向对象的思想设计的,因此在此上下文中的“删除”意味着您正在删除对象,而不是关联。通常,您会执行以下操作:

Foo f = session.get(Foo.class, id);
f.getBars().clear();
session.merge(f);

这将通过您指定的ID检索对象,并通过清除其集合来删除所有Bar关联。显然,您必须按照正确的方向映射Foo-Bars关联才能起作用。



 类似资料:
  • 我有两个多对多关联的表。 DB详细信息:用户-->列[Id,name]

  • 我正在使用hibernate多对多的关联。我有3个表(STUDENT,COURSE和STUDENT_COURSE)。在3个表中,2个是主表,1个是提供关系的中间表。当记录从STUDENT中删除时,相应的映射将从Student_Course中删除。我的要求是它甚至应该从课程表中删除记录。考虑以下STUDENT_COURSE条目: 当从学生表中删除101时,上述表中的第一个条目被删除,但课程表中对应于

  • 我已经在Google Sheets中创建了一个员工培训数据库。一名工作人员将出现在几张纸上。 我想在主表中员工姓名栏旁边添加一列,并在该列中添加“是/否”下拉列表,以便该员工离开公司时,激活“是”下拉,并将与该工作人员相关的所有行剪切并粘贴到具有重复标题的页中,删除原始数据放置的空白单元格。 这有可能吗?有人能帮我解决公式或代码吗? 以下是数据库副本的链接: 数据库 下拉列表位于“管理人员”表的K

  • 本文向大家介绍是否可以从区块链的网络中删除一个或多个块?相关面试题,主要包含被问及是否可以从区块链的网络中删除一个或多个块?时的应答技巧和注意事项,需要的朋友参考一下 对的,这是可能的。有时,只需要考虑此在线分类账的特定部分。通过使用默认过滤器和选项,我们可以删除这些块。

  • 问题内容: jQuery中是否有一种方法可以从现有元素中获取所有CSS并将其应用于另一个元素而无需列出所有元素? 我知道如果它们是带有的样式属性都可以,但是我所有的样式都在外部样式表中。 问题答案: 迟了几年,但是这里有一个可以同时检索内联样式和外部样式的解决方案: 将jQuery对象传递给,它将返回一个对象,然后您可以将其插回jQuery的,例如: :)