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