2016-03-07 46 views
1

enter image description here应用过滤器上的链接表在Hibernate中

我有类别<的经典案例 - > Category_Product < - >产品关系。 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是“1”。 我试图使用@FilterJoinTable注释,但据我所知,它仅适用于实体(不适用于链接表),所以它在这里没有帮助。 我希望有一个使用Hibernate内置功能的优雅解决方案。

回答

1

Hibernate filters文档中有关@FilterJoinTable是明确的:

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

所以,它应该工作。