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

标签 spring hibernate spring-boot

我有一个包含评论集合的实体。现在我想为其添加一个“私有(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();

关于spring - 如何在 oneToMany 中进行 Spring 过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52680854/

相关文章:

java - 将投影形式 Hibernate HQL 查询映射到对象

java - Spring mvc maven - 添加库

java - 找不到 [javax.sql.DataSource] 类型的合格 bean

java - 使用 Hibernate 在外键字段中插入空值

Hibernate 映射资源位于单独的 jar 中

java - Spring Boot 中 websocket 的互斥体

java - 将 Spring java 配置转换为 xml 配置

java - 无法提取结果集,列不存在

spring - 如何在同一个 Spring Boot 应用程序中使用多个 'JWK Set Uri' 值?

java - 如何在 postman 中发送包含数组列表的对象