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

Named Entity Graphs Naming Scope in Spring Data

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

我不确定(通读 JPA 和 Spring 数据文档也没有回答)是所用名称的范围。它们在其中定义的 类 是私有的,还是我可以这样做:

@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中的命名实体图

谢谢!

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

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

The NamedEntityGraph annotation must be applied to the entity class that forms the root of the corresponding graph of entities.

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

因为 Spring Data JPA 只是为此功能提供了一些便利 API。

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