过滤JPA急切获取的实体



我有一堆JPA实体(巫婆Hibernate)称为节点,具有以下字段:

  • NodeId
  • ParentNodeId
  • <
  • 活跃/gh>

ParentNodeId引用了另一个Node,所以我有一个很好的树结构。

我将Node的获取类型设置为eager,因此我将获取树中的所有元素。

我想做的是,通过Active属性来过滤树,也就是只得到那些Active字段设置为1的节点。

是否有简单的方法来做到这一点?

谢谢,krisy

可以使用hibernate过滤器

  1. 在实体类级别定义@FilterDef

    @Entity
    @FilterDef (name="nodeFilter", 
                parameters = @ParamDef( name="activeParam", type="integer" ))
    
  2. 然后在所需的属性上定义@Filter(在属性级别或类级别)

    @Filter(name = "nodeFilter", condition = "active = :activeParam") 
    
  3. 最后启用过滤器无论何时何地你想要的(例如findAllNodes())

    Filter filter = session.enableFilter("nodeFilter");
    filter.setParameter("activeParam", 1);  //e.g Active is 1
    //then retrieve the result from session
    

更多参考文献:link1, link2, link3

最新更新