我有一个带有评论集合的实体。现在,我想为其添加一个字段“私有”。除非明确要求,否则不应包含具有private = true的注释。我显然可以创建一个dto来过滤实体。是否可以在模型上添加可以有条件地打开或关闭的过滤器?
答案 0 :(得分:2)
是的,您可以在模型上定义一个过滤器:
@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();