在Hibernate中的链接表上应用过滤器

时间:2016-03-07 12:16:58

标签: java hibernate

enter image description here

我有一个类别&lt; - &gt;的典型案例。 Category_Product&lt; - &gt;产品关系。 CategoryDTO类的Set<ProductDTO>成员定义为:

@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(
        name = "Category_Product",
        joinColumns = @JoinColumn(name = "CAT_ID"),
        inverseJoinColumns = @JoinColumn(name = "PROD_ID")
)
public Set<Product> getProducts() {
    return products;
}

问题是,当且仅当 Category_Product.ENABLED为&#39; 1&#39; 时,我希望具有Category-&gt; Product关系。 我尝试使用@FilterJoinTable注释,但据我所知,它仅适用于实体(不在链接表上),所以它在这里没有帮助。 我希望有一个使用Hibernate内置功能的优雅解决方案。

1 个答案:

答案 0 :(得分:1)

Hibernate filters文档明确指出@FilterJoinTable

  

当集合使用关联表作为关系表时   表示,您可能希望将过滤条件应用于   关联表本身或目标实体表。申请   对目标实体的约束,使用常规@Filter注释。   但是,如果要定位关联表,请使用   @FilterJoinTable注释。

所以,它应该有用。