Query语句实现级联批量删除

问题是这样的
现在有3张表 A 为用户表 B为职位表 C是中间表里面只有两列存放用户ID和职位ID是个复合主键 要求是能批量删除用户表,并且同时要删除中间表中相应的记录,而且只能用一条Query语句,我在A表的映射文件中配置了cascade="delete" Query代码如下:
String hql = "delete from A where A.id in(1,2,3)";
Query q = session.createQuery(hql);
int result = q.executeUpdate();
该段代码只能批量删除没有外键关联的数据,但是有外键的一删除就报错,
后来我用了HibernateDaoSupport类的delete方法,能删除有外键的数据,但是每次只能删除一条,于是我有写了个循环,能批量删,但是不符合题目的要求。。。。
请问要如何只用一条Query语句实现批量删除有关联的数据

那两条sql吧。。我知道的就是两条sql处理。。第一条删外键,第二条删主表记录
delete from 子表table where 外键 in(fid1,fid2,...);
delete from 主表table where 主键 in(id1,id2,...);
两条可以搞定啊。。关键看你怎么构造这个sql。。
我是通过for循环构造
String [] ids ;//你要删除的记录对应的主键
StringBuffer fSql = new StringBuffer();
StringBuffer sql = new StringBuffer();
fsql.append("delete from ftable where fid in(");
sql.append("delete from table where id in(");
for(String id : ids){
fsql.append(id+",");
sql.append(id+",");
}
//随手写的。。你要对两条删除",",然后加上")",我不记得了。。反正StringBuffer有这个方法的。。在IDE下能点出来。。
sql构造好就先后执行了。。
我这里是原生的sql。。你也可以尝试用hql

先删字表记录再删主表记录。。问题是你一次要删多啊少主表记录?一条还是N条?。。两条sql应该能解决啊