Skip to main content
 首页 » 编程设计

spring中如何在 oneToMany 中进行 Spring 过滤

2025年12月25日43mq0036

我有一个包含评论集合的实体。现在我想为其添加一个“私有(private)”字段。除非明确要求,否则不应包含 private=true 的注释。显然我可以创建一个 dto 来过滤实体。是否可以在模型上添加一个可以有条件打开或关闭的过滤器?

请您参考如下方法:

是的,您可以在模型上定义过滤器:

@Entity 
@Table(name="comments") 
@FilterDef(name="commentFilter", parameters={ 
    @ParamDef(name="private", type="boolean") 
}) 
@Filters({ 
    @Filter(name="commentFilter", condition=":private=isprivate") 
}) 
public class Comments { 
    @Id 
    @Column(name="id") 
    private Integer id; 
    @Column(name="private") 
    private boolean private; 
    ... 

以及查询

Session session = HibernateUtil.getSessionFactory().openSession(); 
        System.out.println("--Enable Filter--"); 
        Filter filter = session.enableFilter("commentFilter"); 
        filter.setParameter("private",true); 
        session.beginTransaction(); 
        List<Comments> results = session.createQuery("from Comments").list();