Spring 如何在oneToMany中使用弹簧过滤器
我有一个实体,它有一组注释。现在我想给它添加一个字段“private”。除非明确要求,否则不应包含private=true的注释。显然,我可以创建一个dto来过滤实体。是否可以在模型上添加可有条件打开或关闭的过滤器?是的,您可以在模型上定义过滤器:Spring 如何在oneToMany中使用弹簧过滤器,spring,hibernate,spring-boot,Spring,Hibernate,Spring Boot,我有一个实体,它有一组注释。现在我想给它添加一个字段“private”。除非明确要求,否则不应包含private=true的注释。显然,我可以创建一个dto来过滤实体。是否可以在模型上添加可有条件打开或关闭的过滤器?是的,您可以在模型上定义过滤器: @Entity @Table(name="comments") @FilterDef(name="commentFilter", parameters={ @ParamDef(name="private", type="boolean") }
@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();
会话会话=HibernateUtil.getSessionFactory().openSession();
System.out.println(“--Enable Filter--”);
Filter=session.enableFilter(“commentFilter”);
filter.setParameter(“private”,true);
session.beginTransaction();
列表结果=session.createQuery(“来自注释”).List();
请确保将属性名称替换为非保留关键字的名称。@M-Razavi感谢您的回复。如果主实体(如Post)包含嵌入的评论集合,这是否仍然可行?@Anders是的,请看以下示例: