HHH-7624 only root level fetch-profile element get processed
This commit is contained in:
parent
4d0f01614a
commit
e2f68ef4a1
|
@ -400,7 +400,10 @@ public class MetadataImpl implements MetadataImplementor, Serializable {
|
|||
if ( profile == null || profile.getName() == null ) {
|
||||
throw new IllegalArgumentException( "Fetch profile object or name is null: " + profile );
|
||||
}
|
||||
fetchProfiles.put( profile.getName(), profile );
|
||||
FetchProfile old = fetchProfiles.put( profile.getName(), profile );
|
||||
if ( old != null ) {
|
||||
LOG.warn( "Duplicated fetch profile with same name [" + profile.getName() + "] found." );
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -228,6 +228,49 @@ public class HibernateMappingProcessor {
|
|||
|
||||
private void processFetchProfiles() {
|
||||
processFetchProfiles( mappingRoot().getFetchProfile(), null );
|
||||
for ( JaxbClassElement classElement : mappingRoot().getClazz() ) {
|
||||
processFetchProfiles(
|
||||
classElement.getFetchProfile(), mappingDocument.getMappingLocalBindingContext()
|
||||
.qualifyClassName( classElement.getName() )
|
||||
);
|
||||
|
||||
// processing fetch profiles defined in the <joined-subclass>
|
||||
processFetchProfilesInJoinedSubclass(classElement.getJoinedSubclass());
|
||||
// <union-subclass>
|
||||
processFetchProfilesInUnionSubclass( classElement.getUnionSubclass() );
|
||||
// <subclass>
|
||||
processFetchProfilesInSubclass( classElement.getSubclass() );
|
||||
}
|
||||
}
|
||||
|
||||
private void processFetchProfilesInSubclass(List<JaxbSubclassElement> subclass) {
|
||||
for ( JaxbSubclassElement subclassElement : subclass ) {
|
||||
processFetchProfiles(
|
||||
subclassElement.getFetchProfile(), mappingDocument.getMappingLocalBindingContext()
|
||||
.qualifyClassName( subclassElement.getName() )
|
||||
);
|
||||
processFetchProfilesInSubclass( subclassElement.getSubclass() );
|
||||
}
|
||||
}
|
||||
|
||||
private void processFetchProfilesInUnionSubclass(List<JaxbUnionSubclassElement> unionSubclass) {
|
||||
for ( JaxbUnionSubclassElement subclassElement : unionSubclass ) {
|
||||
processFetchProfiles(
|
||||
subclassElement.getFetchProfile(), mappingDocument.getMappingLocalBindingContext()
|
||||
.qualifyClassName( subclassElement.getName() )
|
||||
);
|
||||
processFetchProfilesInUnionSubclass( subclassElement.getUnionSubclass() );
|
||||
}
|
||||
}
|
||||
|
||||
private void processFetchProfilesInJoinedSubclass(List<JaxbJoinedSubclassElement> joinedSubclassElements) {
|
||||
for ( JaxbJoinedSubclassElement subclassElement : joinedSubclassElements ) {
|
||||
processFetchProfiles(
|
||||
subclassElement.getFetchProfile(), mappingDocument.getMappingLocalBindingContext()
|
||||
.qualifyClassName( subclassElement.getName() )
|
||||
);
|
||||
processFetchProfilesInJoinedSubclass( subclassElement.getJoinedSubclass() );
|
||||
}
|
||||
}
|
||||
|
||||
public void processFetchProfiles(List<JaxbFetchProfileElement> fetchProfiles, String containingEntityName) {
|
||||
|
|
|
@ -32,7 +32,6 @@ import org.hibernate.UnknownProfileException;
|
|||
import org.hibernate.cfg.Configuration;
|
||||
import org.hibernate.cfg.Environment;
|
||||
import org.hibernate.engine.spi.SessionImplementor;
|
||||
import org.hibernate.testing.FailureExpectedWithNewMetamodel;
|
||||
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
@ -174,7 +173,6 @@ public class JoinFetchProfileTest extends BaseCoreFunctionalTestCase {
|
|||
}
|
||||
|
||||
@Test
|
||||
@FailureExpectedWithNewMetamodel
|
||||
public void testBasicFetchProfileOperation() {
|
||||
assertTrue( "fetch profile not parsed properly", sessionFactory().containsFetchProfileDefinition( "enrollment.details" ) );
|
||||
assertTrue( "fetch profile not parsed properly", sessionFactory().containsFetchProfileDefinition( "offering.details" ) );
|
||||
|
@ -237,7 +235,6 @@ public class JoinFetchProfileTest extends BaseCoreFunctionalTestCase {
|
|||
}
|
||||
|
||||
@Test
|
||||
@FailureExpectedWithNewMetamodel
|
||||
public void testLoadOneToManyFetchProfile() {
|
||||
performWithStandardData(
|
||||
new TestCode() {
|
||||
|
@ -257,7 +254,6 @@ public class JoinFetchProfileTest extends BaseCoreFunctionalTestCase {
|
|||
}
|
||||
|
||||
@Test
|
||||
@FailureExpectedWithNewMetamodel
|
||||
public void testLoadDeepFetchProfile() {
|
||||
performWithStandardData(
|
||||
new TestCode() {
|
||||
|
@ -281,7 +277,6 @@ public class JoinFetchProfileTest extends BaseCoreFunctionalTestCase {
|
|||
}
|
||||
|
||||
@Test
|
||||
@FailureExpectedWithNewMetamodel
|
||||
public void testLoadComponentDerefFetchProfile() {
|
||||
performWithStandardData(
|
||||
new TestCode() {
|
||||
|
@ -306,7 +301,6 @@ public class JoinFetchProfileTest extends BaseCoreFunctionalTestCase {
|
|||
* TODO : this is actually not strictly true. what we should have happen is to subsequently load those fetches
|
||||
*/
|
||||
@Test
|
||||
@FailureExpectedWithNewMetamodel
|
||||
public void testHQL() {
|
||||
performWithStandardData(
|
||||
new TestCode() {
|
||||
|
|
Loading…
Reference in New Issue