Hibernate映射与软删除和"级联"?

时间:2014-07-18 16:40:32

标签: java sql hibernate

我目前正在尝试使用hbm.xml文件映射带有hibernate的sql表。通常,在映射类时,我们添加一个子句'其中="删除= 0"'到类标签。

但是,我现在需要映射一个表A,它基本上是表B的一个属性。也就是说,如果B.delete == 1,那么相应的A行是"删除"同样。

事情是,我们没有删除""表A上的列,而不是将此标志推迟到表B。

是否可以将此子句映射到A类的定义?或者我是否需要为每个查询明确地进行连接?

2 个答案:

答案 0 :(得分:0)

如果你正在使用eclipselink,这可能就是这个伎俩

https://wiki.eclipse.org/EclipseLink/UserGuide/JPA/Basic_JPA_Development/Mapping/Additional_Criteria

e.g。

@Entity
@AdditionalCriteria("this.b.isDeleted=0")
public class A {...}

答案 1 :(得分:0)

可能不是最有效的,实际上它肯定不是,但是如果其他人感兴趣,我通过在映射文件中的类定义中添加“where ... in”子句来解决这个问题。

<class name="A"... where="id in (select b.id from B b where b.deleted=0)">