如何删除子表记录使用父键在hibernate Annotation中。

时间:2014-05-26 05:04:53

标签: java hibernate hibernate-annotations

我正在使用hibernate注释和Mysql用于数据库。 我有两个表一是买方表,另一个是CashReceipt。 CashReciept在购买者表上有一个参考密钥。

那么如何删除特定买方的CashReceipt记录?

我试过这个查询

session.createQuery("Delete FROM CashReceipt cr LEFT JOIN cr.purchase p WHERE p.id=:sid")
                .setInteger("sid", purchase.getId()).executeUpdate();

2 个答案:

答案 0 :(得分:1)

我通过尝试此查询得到了我的答案。

 session.createQuery("Delete FROM CashReceipt cr WHERE cr.purchase.id=:sid")
                            .setInteger("sid", purchase.getId()).executeUpdate();

答案 1 :(得分:0)

为什么在使用session.delete时手动执行此操作:

SomeEntity ent = session.get(SomeEntity.class, '1234');
session.delete(ent);

此外,您可能希望查看父表的CascadeType。在父表中将其设置为CascadeType.DELETE。

@OneToMany(cascade = CascadeType.DELETE)
List<Child> childElements;

它将删除与该父级关联的所有子元素。