Spring数据中的命名实体图命名范围

时间:2018-07-29 11:36:09

标签: hibernate jpa spring-data-jpa spring-data entitygraph

我最近发现了命名实体图,我正在尝试以一种干净,干燥的方式实现它们。

我不确定的是(使用JPA和Spring Data Docs并没有得到答案)是所使用名称的范围。是对其定义的类的专用,还是我可以做这样的事情:

@Entity
@NamedEntityGraphs({
        @NamedEntityGraph(name = "Route.deep",
        attributeNodes = {
                @NamedAttributeNode(value = "stops", subgraph = "Stop.deep ")
        })
})
public class Route { ... }

@Entity
@NamedEntityGraphs({
        @NamedEntityGraph(name = "Stop.deep",
        attributeNodes = {
                @NamedAttributeNode(value = "records")
        })
})
public class Stop{ ... }

Route中的Stop.deep子图是指Stop中的命名实体图。

谢谢!

1 个答案:

答案 0 :(得分:1)

无需定义任何范围就可以从EntityManager获得EntityGraph。 =>在这种意义上,EntityGraph没有范围。

但是命名实体图绑定到定义它们的实体类型。根据JPA规范(10.3.1):

  

必须将NamedEntityGraph批注应用于构成相应实体图的根的实体类。

子图绑定到它们所应用的类型(而不是引用它们的类型。请参阅JPA规范(10.3.3)。

由于Spring Data JPA仅为此功能提供了一些方便的API。

以供参考:https://docs.oracle.com/javaee/7/tutorial/persistence-entitygraphs003.htm