我有一堆JPA实体(巫婆Hibernate)称为节点,具有以下字段:
- NodeId
- ParentNodeId <
- 活跃/gh>
ParentNodeId引用了另一个Node,所以我有一个很好的树结构。
我将Node的获取类型设置为eager,因此我将获取树中的所有元素。
我想做的是,通过Active属性来过滤树,也就是只得到那些Active字段设置为1的节点。
是否有简单的方法来做到这一点?
谢谢,krisy
可以使用hibernate过滤器
在实体类级别定义
@FilterDef
@Entity @FilterDef (name="nodeFilter", parameters = @ParamDef( name="activeParam", type="integer" ))
然后在所需的属性上定义
@Filter
(在属性级别或类级别)@Filter(name = "nodeFilter", condition = "active = :activeParam")
最后启用过滤器无论何时何地你想要的(例如findAllNodes())
Filter filter = session.enableFilter("nodeFilter"); filter.setParameter("activeParam", 1); //e.g Active is 1 //then retrieve the result from session
更多参考文献:link1, link2, link3