HHH-8966 do not process attributes for non
@Entity/@MappedSuperclass/@Embeddable classes
This commit is contained in:
parent
8002cf4492
commit
0612dc72f7
|
@ -96,8 +96,6 @@ public class IdentifiableTypeMetadata extends ManagedTypeMetadata {
|
||||||
collectConversionInfo();
|
collectConversionInfo();
|
||||||
collectAttributeOverrides();
|
collectAttributeOverrides();
|
||||||
collectAssociationOverrides();
|
collectAssociationOverrides();
|
||||||
|
|
||||||
collectAttributesIfNeeded();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void collectConversionInfo() {
|
protected void collectConversionInfo() {
|
||||||
|
@ -144,8 +142,6 @@ public class IdentifiableTypeMetadata extends ManagedTypeMetadata {
|
||||||
collectConversionInfo();
|
collectConversionInfo();
|
||||||
collectAttributeOverrides();
|
collectAttributeOverrides();
|
||||||
collectAssociationOverrides();
|
collectAssociationOverrides();
|
||||||
|
|
||||||
collectAttributesIfNeeded();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -33,6 +33,7 @@ import java.util.List;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
import javax.persistence.AccessType;
|
import javax.persistence.AccessType;
|
||||||
|
|
||||||
import org.hibernate.HibernateException;
|
import org.hibernate.HibernateException;
|
||||||
|
@ -69,7 +70,6 @@ import org.hibernate.metamodel.spi.AttributeRole;
|
||||||
import org.hibernate.metamodel.spi.NaturalIdMutability;
|
import org.hibernate.metamodel.spi.NaturalIdMutability;
|
||||||
import org.hibernate.xml.spi.Origin;
|
import org.hibernate.xml.spi.Origin;
|
||||||
import org.hibernate.xml.spi.SourceType;
|
import org.hibernate.xml.spi.SourceType;
|
||||||
|
|
||||||
import org.jboss.jandex.AnnotationInstance;
|
import org.jboss.jandex.AnnotationInstance;
|
||||||
import org.jboss.jandex.AnnotationTarget;
|
import org.jboss.jandex.AnnotationTarget;
|
||||||
import org.jboss.jandex.AnnotationValue;
|
import org.jboss.jandex.AnnotationValue;
|
||||||
|
@ -375,11 +375,11 @@ public abstract class ManagedTypeMetadata implements OverrideAndConverterCollect
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isMappedSuperclass(JavaTypeDescriptor javaTypeDescriptor) {
|
protected boolean isMappedSuperclass(JavaTypeDescriptor javaTypeDescriptor) {
|
||||||
return javaTypeDescriptor.findLocalTypeAnnotation( JPADotNames.MAPPED_SUPERCLASS ) != null;
|
return javaTypeDescriptor.findLocalTypeAnnotation( JPADotNames.MAPPED_SUPERCLASS ) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isEntity(ClassDescriptor javaTypeDescriptor) {
|
private boolean isEntity(JavaTypeDescriptor javaTypeDescriptor) {
|
||||||
return javaTypeDescriptor.findLocalTypeAnnotation( JPADotNames.ENTITY ) != null;
|
return javaTypeDescriptor.findLocalTypeAnnotation( JPADotNames.ENTITY ) != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -424,7 +424,18 @@ public abstract class ManagedTypeMetadata implements OverrideAndConverterCollect
|
||||||
protected void collectAttributesIfNeeded() {
|
protected void collectAttributesIfNeeded() {
|
||||||
if ( persistentAttributeMap == null ) {
|
if ( persistentAttributeMap == null ) {
|
||||||
persistentAttributeMap = new HashMap<String, PersistentAttribute>();
|
persistentAttributeMap = new HashMap<String, PersistentAttribute>();
|
||||||
collectPersistentAttributes();
|
// TODO: This probably isn't the best place for this. Walking and creating the ManagedTypeMetadatas,
|
||||||
|
// for the entire subclass tree, including subclasses that are not an @Entity/@MappedSuperclass/@Embeddable,
|
||||||
|
// is entirely necessary. But, we need to skip processing the attributes in this case. Cleaner way to do
|
||||||
|
// it in the new architecture?
|
||||||
|
if (isEntity( javaTypeDescriptor )
|
||||||
|
|| isMappedSuperclass( javaTypeDescriptor )
|
||||||
|
|| isEmbeddableType( javaTypeDescriptor )) {
|
||||||
|
collectPersistentAttributes();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
System.out.println();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -23,21 +23,18 @@
|
||||||
*/
|
*/
|
||||||
package org.hibernate.test.annotations.entitynonentity;
|
package org.hibernate.test.annotations.entitynonentity;
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import org.hibernate.Session;
|
|
||||||
import org.hibernate.Transaction;
|
|
||||||
import org.hibernate.testing.FailureExpectedWithNewMetamodel;
|
|
||||||
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
|
import org.hibernate.Session;
|
||||||
|
import org.hibernate.Transaction;
|
||||||
|
import org.hibernate.testing.junit4.BaseCoreFunctionalTestCase;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Emmanuel Bernard
|
* @author Emmanuel Bernard
|
||||||
*/
|
*/
|
||||||
@FailureExpectedWithNewMetamodel
|
|
||||||
public class EntityNonEntityTest extends BaseCoreFunctionalTestCase {
|
public class EntityNonEntityTest extends BaseCoreFunctionalTestCase {
|
||||||
@Test
|
@Test
|
||||||
public void testMix() throws Exception {
|
public void testMix() throws Exception {
|
||||||
|
|
|
@ -1,8 +1,6 @@
|
||||||
package org.hibernate.test.annotations.fkcircularity;
|
package org.hibernate.test.annotations.fkcircularity;
|
||||||
|
|
||||||
import org.hibernate.metamodel.MetadataSources;
|
import org.hibernate.metamodel.MetadataSources;
|
||||||
|
|
||||||
import org.hibernate.testing.FailureExpectedWithNewMetamodel;
|
|
||||||
import org.hibernate.testing.junit4.BaseUnitTestCase;
|
import org.hibernate.testing.junit4.BaseUnitTestCase;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
|
@ -13,11 +11,7 @@ import org.junit.Test;
|
||||||
*/
|
*/
|
||||||
public class FkCircularityTest extends BaseUnitTestCase {
|
public class FkCircularityTest extends BaseUnitTestCase {
|
||||||
@Test
|
@Test
|
||||||
@FailureExpectedWithNewMetamodel
|
|
||||||
public void testJoinedSublcassesInPK() {
|
public void testJoinedSublcassesInPK() {
|
||||||
// metamodel : fails with error about D#id annotated with @Embedded but D_PK not annotated as @Embeddable
|
|
||||||
// however, adding @Embeddable to D_PK makes no difference; same error...
|
|
||||||
|
|
||||||
MetadataSources metadataSources = new MetadataSources()
|
MetadataSources metadataSources = new MetadataSources()
|
||||||
.addAnnotatedClass( A.class )
|
.addAnnotatedClass( A.class )
|
||||||
.addAnnotatedClass( B.class )
|
.addAnnotatedClass( B.class )
|
||||||
|
|
|
@ -23,7 +23,11 @@
|
||||||
*/
|
*/
|
||||||
package org.hibernate.test.hql;
|
package org.hibernate.test.hql;
|
||||||
|
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
|
||||||
import javax.persistence.Embeddable;
|
import javax.persistence.Embeddable;
|
||||||
import javax.persistence.Embedded;
|
import javax.persistence.Embedded;
|
||||||
import javax.persistence.Entity;
|
import javax.persistence.Entity;
|
||||||
|
@ -36,16 +40,13 @@ import org.hibernate.cfg.Configuration;
|
||||||
import org.hibernate.dialect.H2Dialect;
|
import org.hibernate.dialect.H2Dialect;
|
||||||
import org.hibernate.engine.query.spi.HQLQueryPlan;
|
import org.hibernate.engine.query.spi.HQLQueryPlan;
|
||||||
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
import org.hibernate.engine.spi.SessionFactoryImplementor;
|
||||||
|
import org.hibernate.testing.FailureExpectedWithNewMetamodel;
|
||||||
import org.hibernate.testing.TestForIssue;
|
import org.hibernate.testing.TestForIssue;
|
||||||
import org.hibernate.testing.junit4.BaseUnitTestCase;
|
import org.hibernate.testing.junit4.BaseUnitTestCase;
|
||||||
import org.junit.After;
|
import org.junit.After;
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import static org.junit.Assert.assertEquals;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
*/
|
*/
|
||||||
|
@ -101,6 +102,7 @@ public class TupleSupportTest extends BaseUnitTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@FailureExpectedWithNewMetamodel
|
||||||
public void testImplicitTupleNotInList() {
|
public void testImplicitTupleNotInList() {
|
||||||
final String hql = "from TheEntity e where e.compositeValue not in (:p1,:p2)";
|
final String hql = "from TheEntity e where e.compositeValue not in (:p1,:p2)";
|
||||||
HQLQueryPlan queryPlan = ( (SessionFactoryImplementor) sessionFactory ).getQueryPlanCache()
|
HQLQueryPlan queryPlan = ( (SessionFactoryImplementor) sessionFactory ).getQueryPlanCache()
|
||||||
|
|
|
@ -98,6 +98,7 @@ public class LoadPlanStructureAssertionTest extends BaseUnitTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@FailureExpectedWithNewMetamodel
|
||||||
public void testEncapsulatedCompositeIdNoFetches1() {
|
public void testEncapsulatedCompositeIdNoFetches1() {
|
||||||
// CardField is an entity with a composite identifier mapped via a @EmbeddedId class (CardFieldPK) defining
|
// CardField is an entity with a composite identifier mapped via a @EmbeddedId class (CardFieldPK) defining
|
||||||
// a @ManyToOne
|
// a @ManyToOne
|
||||||
|
@ -119,6 +120,7 @@ public class LoadPlanStructureAssertionTest extends BaseUnitTestCase {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@FailureExpectedWithNewMetamodel
|
||||||
public void testEncapsulatedCompositeIdNoFetches2() {
|
public void testEncapsulatedCompositeIdNoFetches2() {
|
||||||
// Parent is an entity with a composite identifier mapped via a @EmbeddedId class (ParentPK) which is defined
|
// Parent is an entity with a composite identifier mapped via a @EmbeddedId class (ParentPK) which is defined
|
||||||
// using just basic types (strings, ints, etc)
|
// using just basic types (strings, ints, etc)
|
||||||
|
|
|
@ -27,12 +27,9 @@ import org.hibernate.SessionFactory;
|
||||||
import org.hibernate.cfg.Configuration;
|
import org.hibernate.cfg.Configuration;
|
||||||
import org.hibernate.persister.entity.EntityPersister;
|
import org.hibernate.persister.entity.EntityPersister;
|
||||||
import org.hibernate.persister.walking.spi.MetamodelGraphWalker;
|
import org.hibernate.persister.walking.spi.MetamodelGraphWalker;
|
||||||
|
|
||||||
import org.junit.Test;
|
|
||||||
|
|
||||||
import org.hibernate.testing.FailureExpectedWithNewMetamodel;
|
|
||||||
import org.hibernate.testing.junit4.BaseUnitTestCase;
|
|
||||||
import org.hibernate.test.annotations.collectionelement.TestCourse;
|
import org.hibernate.test.annotations.collectionelement.TestCourse;
|
||||||
|
import org.hibernate.testing.junit4.BaseUnitTestCase;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Steve Ebersole
|
* @author Steve Ebersole
|
||||||
|
@ -42,10 +39,7 @@ public class CompositesWalkingTest extends BaseUnitTestCase {
|
||||||
* Test one-level composites defined as part of an entity.
|
* Test one-level composites defined as part of an entity.
|
||||||
*/
|
*/
|
||||||
@Test
|
@Test
|
||||||
@FailureExpectedWithNewMetamodel
|
|
||||||
public void testEntityComposite() {
|
public void testEntityComposite() {
|
||||||
// metamodel : another indication of @Embedded/@Embeddable problem
|
|
||||||
|
|
||||||
final SessionFactory sf = new Configuration()
|
final SessionFactory sf = new Configuration()
|
||||||
.addAnnotatedClass( TestCourse.class )
|
.addAnnotatedClass( TestCourse.class )
|
||||||
.buildSessionFactory();
|
.buildSessionFactory();
|
||||||
|
|
Loading…
Reference in New Issue