From b6a835240667453519d2623d326de9d351b66fb4 Mon Sep 17 00:00:00 2001 From: Jocki Hendry Date: Tue, 25 Mar 2014 15:22:34 +0700 Subject: [PATCH] HHH-9080 - Can't add attribute node declared in superclass (inheritance) in EntityGraph --- .../jpa/graph/internal/EntityGraphImpl.java | 2 +- .../jpa/test/graphs/EntityGraphTest.java | 40 ++++++++++++++++++- 2 files changed, 40 insertions(+), 2 deletions(-) diff --git a/hibernate-entitymanager/src/main/java/org/hibernate/jpa/graph/internal/EntityGraphImpl.java b/hibernate-entitymanager/src/main/java/org/hibernate/jpa/graph/internal/EntityGraphImpl.java index a70d0a1372..e119472d6a 100644 --- a/hibernate-entitymanager/src/main/java/org/hibernate/jpa/graph/internal/EntityGraphImpl.java +++ b/hibernate-entitymanager/src/main/java/org/hibernate/jpa/graph/internal/EntityGraphImpl.java @@ -136,7 +136,7 @@ public List> getAttributeNodes() { @Override protected Attribute resolveAttribute(String attributeName) { - final Attribute attribute = entityType.getDeclaredAttribute( attributeName ); + final Attribute attribute = entityType.getAttribute( attributeName ); if ( attribute == null ) { throw new IllegalArgumentException( String.format( diff --git a/hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/graphs/EntityGraphTest.java b/hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/graphs/EntityGraphTest.java index a3161994e6..3b861e9c81 100644 --- a/hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/graphs/EntityGraphTest.java +++ b/hibernate-entitymanager/src/test/java/org/hibernate/jpa/test/graphs/EntityGraphTest.java @@ -225,7 +225,45 @@ public void inheritanceTest() { em.close(); } - @Entity + @Test + @TestForIssue(jiraKey = "HHH-9080") + public void attributeNodeInheritanceTest() { + EntityManager em = getOrCreateEntityManager(); + em.getTransaction().begin(); + + Manager manager = new Manager(); + em.persist( manager ); + Employee employee = new Employee(); + manager.friends.add( employee); + em.persist( employee ); + Manager anotherManager = new Manager(); + manager.managers.add(anotherManager); + em.persist( anotherManager ); + em.getTransaction().commit(); + em.clear(); + + em.getTransaction().begin(); + + EntityGraph entityGraph = em.createEntityGraph( Manager.class ); + entityGraph.addAttributeNodes( "friends" ); + entityGraph.addAttributeNodes( "managers" ); + + Map properties = new HashMap(); + properties.put( "javax.persistence.loadgraph", entityGraph ); + + Manager result = em.find( Manager.class, manager.id, properties ); + + assertTrue( Hibernate.isInitialized( result ) ); + assertTrue( Hibernate.isInitialized( result.friends ) ); + assertEquals( result.friends.size(), 1 ); + assertTrue( Hibernate.isInitialized( result.managers) ); + assertEquals( result.managers.size(), 1 ); + + em.getTransaction().commit(); + em.close(); + } + + @Entity public static class Foo { @Id