1

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

我不确定(阅读 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 中的命名实体图。

谢谢!

4

1 回答 1

1

EntityGraph 是从 EntityManager 获得的,没有定义任何类型的范围。=> 在这个意义上没有 EntityGraph 的范围。

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

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

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

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

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

于 2018-07-30T05:48:02.597 回答