【问题标题】:Filtering JPA eager fetched entites过滤 JPA 急切获取实体
【发布时间】:2014-08-15 07:12:18
【问题描述】:

我有一堆名为 Nodes 的 JPA 实体(witch Hibernate),具有以下字段:

  • 节点ID
  • 父节点ID
  • 活动

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

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

我想做的是通过 Active 属性过滤树,即只获取那些其 Active 字段设置为 1 的节点。

有没有简单的方法可以做到这一点?

谢谢, 克丽丝

【问题讨论】:

    标签: java hibernate jpa


    【解决方案1】:

    您可以使用hibernate filter

    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
      

    更多参考:link1link2link3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-03
      • 1970-01-01
      • 1970-01-01
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 2012-12-17
      相关资源
      最近更新 更多