级联删除的主键和分区键使用休眠
问题描述:
我有一个实体PersonEntity,具有一个id(PERSON_ID列),一个分区键(TENANT_ID列)和一个AddressEntity的集合。 AddressEntity具有一个id(ADDRESS_ID),一个分区键(TENANT_ID)和一个字段(VALUE)。级联删除的主键和分区键使用休眠
这是它看起来在PersonEntity方式:
@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER, mappedBy = "person", orphanRemoval = true)
public Set<AddressEntity> getAddresses() {
return addresses;
}
由于CascadeType.ALL设置,当我一个删除一个人,就会触发删除地址也是如此。我使用会话的delete(Object)
方法删除该人。
产生的SQL为删除这个样子的:
delete from address where address_id=?
delete from person where person_id=?
有什么ORM的方式来执行这个级联删除同时使用为person_id和tenant_id这样,我得到了下面的SQL生成:
delete from address where address_id=? and tenant_id=?
delete from person where person_id=? and tenant_id=?
我知道我可以简单地使用SQL编写所有的单个删除操作,但是我喜欢使用Hibernate来简化所有关联的表删除操作。
我想这样做的原因是为了确保删除不必循环分区来查找address_id或person_id。如果我给了它tenant_id,它可以立即转到正确的分区。
这很不幸,但我想它并没有那么糟糕,因为在我们的业务工作流程中确实没有用于跨分区查询的用例。只需要一些额外的工作 - 谢谢。 – AHungerArtist