Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 删除Hibernate(HQL)中两个表之间的关系_Java_Hibernate_Servlets_Hql - Fatal编程技术网

Java 删除Hibernate(HQL)中两个表之间的关系

Java 删除Hibernate(HQL)中两个表之间的关系,java,hibernate,servlets,hql,Java,Hibernate,Servlets,Hql,我有两个表(资源和标记),第三个表连接这两个表(资源和标记)。如何使用HQL查询删除具有多个标记的资源的多对多关系? 例如,我想删除资源标签表中资源的所有标签。如果您的两个表是“a”和“B”,那么 设置两个表时,需要在表“A”上指定“级联” 像这样: <bag name="A" inverse="true" lazy="false" cascade="all"> <key column="SOME_ID"/> ..... ..... 现在,对“A

我有两个表(资源和标记),第三个表连接这两个表(资源和标记)。如何使用HQL查询删除具有多个标记的资源的多对多关系? 例如,我想删除资源标签表中资源的所有标签。

如果您的两个表是“a”和“B”,那么 设置两个表时,需要在表“A”上指定“级联”

像这样:

<bag name="A"
  inverse="true"
  lazy="false"
  cascade="all">
  <key column="SOME_ID"/>
  .....

.....

现在,对“A”执行的任何删除都应该达到预期效果。

您能给我一个HQL查询示例吗?我所说的“A”上的任何删除”的意思是它不需要是HQL。这取决于您,并由您的应用程序驱动。通常,Hibernate的想法是处理对象,因此有多种删除方法。你可以说:sess.delete(myObjOfTypeA);对不起,打进去太快了,我错了!通常,对于您描述的关系类型,您应该获得一个对象列表,修改它(比如通过删除项)并保存该列表。但是,您仍然可以通过HQL进行删除:Query deleteExample=session.createQuery(“从itemType=?”的项中删除项”);以下是我试图做的:Resources res=(Resources)session.load(Resources.class,1);Set tagses=res.getTagses();我做得对吗?现在,我如何删除所有引用?只需说:sess.delete(res)[注意:您需要刷新会话以使用deletes提交事务…]