我目前正在尝试使用hbm.xml文件映射带有hibernate的sql表。通常,在映射类时,我们添加一个子句'其中="删除= 0"'到类标签。
但是,我现在需要映射一个表A,它基本上是表B的一个属性。也就是说,如果B.delete == 1,那么相应的A行是"删除"同样。
事情是,我们没有删除""表A上的列,而不是将此标志推迟到表B。
是否可以将此子句映射到A类的定义?或者我是否需要为每个查询明确地进行连接?
答案 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)">