Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.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
如何删除hibernate一对多关系中的记录_Hibernate_Hql_Hibernate Mapping - Fatal编程技术网

如何删除hibernate一对多关系中的记录

如何删除hibernate一对多关系中的记录,hibernate,hql,hibernate-mapping,Hibernate,Hql,Hibernate Mapping,我有两个表,一个是QuickLinks,另一个是OrgUnit。OrgUnit表是父表,QuickLinks表是子表。我在QuickLinks表中添加了多对一的关系 @Entity @Table(name ="TBL_STD_QUICK_LINKS") public class QuickLinks { @Id @GeneratedValue @Column(name = "FLD_QUICK_LINK_ID") private Long quickLinkId;

我有两个表,一个是QuickLinks,另一个是OrgUnit。OrgUnit表是父表,QuickLinks表是子表。我在QuickLinks表中添加了多对一的关系

@Entity
@Table(name ="TBL_STD_QUICK_LINKS")
public class QuickLinks {
    @Id
    @GeneratedValue
    @Column(name = "FLD_QUICK_LINK_ID")
    private Long quickLinkId;

    @Column(name = "FLD_DISPLAY_NAME")
    private String displayName;

    @ManyToOne
    private OrgUnit orgUnit; 
}



@Entity
@Table(name = "TBL_STD_ORG_UNIT")
public class OrgUnit implements Serializable  {
@Id
@GeneratedValue
@Column(name = "FLD_ORGUNIT_ID")
private Long orgUnitId;

@Column(name = "FLD_OUNAME")
private String ouName;

@Column(name = "FLD_OUPARENT_ID")
private Long ouParentId;

@Column(name = "FLD_OUPATH")
private String ouPath;

}
我想删除记录QuickLinks表,从OrgUnit的输出路径以“/abc/xyz”开头

Query executeQuery = getSession().createQuery("delete from QuickLinks as links where links.orgUnit.ouPath like :OrgName");
 executeQuery.setParameter("OrgName", ouPath+"%");
 executeQuery.executeUpdate();
但我在执行此查询时遇到异常。 有谁能告诉我这里面有什么不对吗?

引用自:

在批量HQL查询中不能指定任何形式的连接语法(隐式或显式)。子查询可以在where子句中使用,其中子查询本身可能包含联接

是隐式内部联接,因此不可接受

您可以使用本机(SQL)查询。或者,根据文档提示,您可以使用子查询:

delete from QuickLinks as link where link.id in 
    (select link2.id from QuickLinks link2 
     where link2.orgUnit.ouPath like :orgName)

旁注:
QuickLinks
应命名为
QuickLink

什么例外?张贴stacktrace。
delete from QuickLinks as link where link.id in 
    (select link2.id from QuickLinks link2 
     where link2.orgUnit.ouPath like :orgName)