Class EntityGraphs


  • public final class EntityGraphs
    extends Object
    A collection of EntityGraph utilities.
    API Note:
    These methods really belong inside other classes that we cannot modify.
    • Constructor Detail

      • EntityGraphs

        public EntityGraphs()
    • Method Detail

      • merge

        public static <T> EntityGraph<T> merge​(EntityManager em,
                                               Class<T> rootType,
                                               EntityGraph<T>... graphs)
        Merges multiple entity graphs into a single graph that specifies the fetching/loading of all attributes the input graphs specify.
        Type Parameters:
        T - Root entity type of the query and graph.
        Parameters:
        em - EntityManager to use to create the new merged graph.
        rootType - Root type of the entity for which the graph is being merged.
        graphs - Graphs to merge.
        Returns:
        The merged graph.
      • executeList

        public static List executeList​(Query query,
                                       EntityGraph graph,
                                       GraphSemantic semantic)
        Convenience method for executing the query, applying the given EntityGraph using the specified semantic
        Parameters:
        query - The JPA Query
        graph - The graph to apply
        semantic - The semantic to use when applying the graph
      • executeList

        public static <R> List<R> executeList​(TypedQuery<R> query,
                                              EntityGraph<R> graph,
                                              GraphSemantic semantic)
        Parameters:
        query - The JPA Query
        graph - The graph to apply
        semantic - The semantic to use when applying the graph
        API Note:
        This signature assumes that the Query's return is an entity and that the graph applies to that entity's type. JPA does not necessarily require that, but it is by far the most common usage.
      • executeList

        public static List executeList​(Query query,
                                       EntityGraph graph)
        Convenience method for executing the query using the given EntityGraph.
        Parameters:
        query - The JPA Query
        graph - The graph to apply
        API Note:
        Operates on the assumption that the "default" semantic for an entity graph applied to a query is GraphSemantic.FETCH. This is simply knowledge from JPA EG discussions, nothing that is specifically mentioned or discussed in the spec.
      • executeList

        public static <R> List<R> executeList​(TypedQuery<R> query,
                                              EntityGraph<R> graph)
        Parameters:
        query - The JPA Query
        graph - The graph to apply
        API Note:
        This signature assumes that the Query's return is an entity and that the graph applies to that entity's type. JPA does not necessarily require that, but it is by far the most common usage.
      • areEqual

        public static <T> boolean areEqual​(EntityGraph<T> a,
                                           EntityGraph<T> b)
        Compares two entity graphs and returns true if they are equal, ignoring attribute order.
        Type Parameters:
        T - Root entity type of BOTH graphs.
        Parameters:
        a - Graph to compare.
        b - Graph to compare.
      • areEqual

        public static boolean areEqual​(AttributeNode<?> a,
                                       AttributeNode<?> b)
        Compares two entity graph attribute node and returns true if they are equal, ignoring subgraph attribute order.
      • areEqual

        public static boolean areEqual​(Map<Class,​Subgraph> a,
                                       Map<Class,​Subgraph> b)
        Compares two entity subgraph maps and returns true if they are equal, ignoring order.
      • areEqual

        public static boolean areEqual​(Subgraph a,
                                       Subgraph b)
        Compares two entity subgraphs and returns true if they are equal, ignoring attribute order.