Skip to content

Commit 106f821

Browse files
committed
clean up and simplify code which depended on deprecated DiscriminatorMetadata type
1 parent fcb22e1 commit 106f821

File tree

13 files changed

+94
-79
lines changed

13 files changed

+94
-79
lines changed

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/DiscriminatorConverter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,7 +59,7 @@ public O toDomainValue(R relationalForm) {
5959
final EntityMappingType indicatedEntity = matchingValueDetails.getIndicatedEntity();
6060
//noinspection unchecked
6161
return indicatedEntity.getRepresentationStrategy().getMode() == RepresentationMode.POJO
62-
&& indicatedEntity.getEntityName().equals( indicatedEntity.getJavaType().getJavaTypeClass().getName() )
62+
&& indicatedEntity.getEntityName().equals( indicatedEntity.getJavaType().getJavaTypeClass().getName() )
6363
? (O) indicatedEntity.getJavaType().getJavaTypeClass()
6464
: (O) indicatedEntity.getEntityName();
6565
}

hibernate-core/src/main/java/org/hibernate/metamodel/mapping/internal/DiscriminatorTypeImpl.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,15 +41,13 @@ public BasicType<?> getUnderlyingJdbcMapping() {
4141
return underlyingJdbcMapping;
4242
}
4343

44-
@SuppressWarnings("rawtypes")
45-
@Override
46-
public DiscriminatorConverter getValueConverter() {
47-
return (DiscriminatorConverter) super.getValueConverter();
44+
@Override @SuppressWarnings("unchecked")
45+
public DiscriminatorConverter<O,?> getValueConverter() {
46+
return (DiscriminatorConverter<O,?>) super.getValueConverter();
4847
}
4948

50-
@SuppressWarnings({ "rawtypes", "unchecked" })
5149
@Override
52-
public Class getJavaType() {
50+
public Class<O> getJavaType() {
5351
return domainJavaType.getJavaTypeClass();
5452
}
5553

hibernate-core/src/main/java/org/hibernate/metamodel/model/domain/internal/EntityTypeImpl.java

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -14,23 +14,21 @@
1414

1515
import org.hibernate.mapping.PersistentClass;
1616
import org.hibernate.metamodel.UnsupportedMappingException;
17+
import org.hibernate.metamodel.mapping.DiscriminatorType;
1718
import org.hibernate.metamodel.mapping.EntityDiscriminatorMapping;
1819
import org.hibernate.metamodel.mapping.EntityIdentifierMapping;
1920
import org.hibernate.metamodel.model.domain.IdentifiableDomainType;
2021
import org.hibernate.metamodel.model.domain.JpaMetamodel;
2122
import org.hibernate.metamodel.model.domain.PersistentAttribute;
2223
import org.hibernate.metamodel.model.domain.spi.JpaMetamodelImplementor;
23-
import org.hibernate.persister.entity.DiscriminatorMetadata;
2424
import org.hibernate.persister.entity.EntityPersister;
2525
import org.hibernate.query.PathException;
2626
import org.hibernate.query.sqm.SqmPathSource;
2727
import org.hibernate.query.sqm.tree.domain.SqmManagedDomainType;
2828
import org.hibernate.query.sqm.tree.domain.SqmPath;
2929
import org.hibernate.query.sqm.tree.domain.SqmPersistentAttribute;
3030
import org.hibernate.query.sqm.tree.domain.SqmSingularPersistentAttribute;
31-
import org.hibernate.query.sqm.tree.domain.SqmDomainType;
3231
import org.hibernate.query.sqm.tree.domain.SqmEntityDomainType;
33-
import org.hibernate.type.StandardBasicTypes;
3432
import org.hibernate.type.descriptor.java.JavaType;
3533

3634
import static org.hibernate.metamodel.model.domain.internal.DomainModelHelper.isCompatible;
@@ -71,16 +69,15 @@ public EntityTypeImpl(
7169
this.jpaEntityName = jpaEntityName;
7270
this.metamodel = metamodel;
7371

72+
discriminatorPathSource = entityDiscriminatorPathSource( metamodel );
73+
}
74+
75+
private EntityDiscriminatorSqmPathSource<?> entityDiscriminatorPathSource(JpaMetamodelImplementor metamodel) {
7476
final EntityPersister entityDescriptor =
7577
metamodel.getMappingMetamodel()
7678
.getEntityDescriptor( getHibernateEntityName() );
77-
final DiscriminatorMetadata discriminatorMetadata = entityDescriptor.getTypeDiscriminatorMetadata();
78-
final SqmDomainType<?> discriminatorType =
79-
discriminatorMetadata != null
80-
? (SqmDomainType<?>) discriminatorMetadata.getResolutionType()
81-
: metamodel.getTypeConfiguration().getBasicTypeRegistry().resolve( StandardBasicTypes.STRING );
82-
83-
discriminatorPathSource = discriminatorType == null ? null
79+
final DiscriminatorType<?> discriminatorType = entityDescriptor.getDiscriminatorDomainType();
80+
return discriminatorType == null ? null
8481
: new EntityDiscriminatorSqmPathSource<>( discriminatorType, this, entityDescriptor );
8582
}
8683

hibernate-core/src/main/java/org/hibernate/persister/entity/AbstractEntityPersister.java

Lines changed: 28 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -125,7 +125,6 @@
125125
import org.hibernate.metamodel.mapping.AttributeMapping;
126126
import org.hibernate.metamodel.mapping.AttributeMappingsList;
127127
import org.hibernate.metamodel.mapping.AttributeMappingsMap;
128-
import org.hibernate.metamodel.mapping.DiscriminatorConverter;
129128
import org.hibernate.metamodel.mapping.DiscriminatorType;
130129
import org.hibernate.metamodel.mapping.EmbeddableValuedModelPart;
131130
import org.hibernate.metamodel.mapping.EntityDiscriminatorMapping;
@@ -252,7 +251,6 @@
252251
import org.hibernate.type.Type;
253252
import org.hibernate.type.descriptor.java.JavaType;
254253
import org.hibernate.type.descriptor.java.MutabilityPlan;
255-
import org.hibernate.type.descriptor.java.spi.JavaTypeRegistry;
256254
import org.hibernate.type.spi.TypeConfiguration;
257255

258256
import java.io.Serializable;
@@ -2204,49 +2202,40 @@ public String[] getPropertyColumnNames(String propertyName) {
22042202
return propertyMapping.getColumnNames( propertyName );
22052203
}
22062204

2207-
private DiscriminatorType<?> discriminatorType;
2205+
private DiscriminatorType<?> discriminatorDomainType;
22082206

2209-
protected DiscriminatorType<?> resolveDiscriminatorType() {
2210-
if ( discriminatorType == null ) {
2211-
discriminatorType = buildDiscriminatorType();
2207+
@Override
2208+
public DiscriminatorType<?> getDiscriminatorDomainType() {
2209+
if ( discriminatorDomainType == null ) {
2210+
discriminatorDomainType = buildDiscriminatorType();
22122211
}
2213-
return discriminatorType;
2212+
return discriminatorDomainType;
22142213
}
22152214

22162215
private DiscriminatorType<?> buildDiscriminatorType() {
2217-
final BasicType<?> underlingJdbcMapping = getDiscriminatorType();
2218-
if ( underlingJdbcMapping == null ) {
2219-
return null;
2220-
}
2221-
2222-
final JavaTypeRegistry javaTypeRegistry = factory.getTypeConfiguration().getJavaTypeRegistry();
2223-
2224-
final JavaType<Object> domainJavaType;
2225-
if ( representationStrategy.getMode() == POJO
2226-
&& getEntityName().equals( getJavaType().getJavaTypeClass().getName() ) ) {
2227-
domainJavaType = javaTypeRegistry.resolveDescriptor( Class.class );
2228-
}
2229-
else {
2230-
domainJavaType = javaTypeRegistry.resolveDescriptor( String.class );
2231-
}
2232-
2233-
//noinspection rawtypes
2234-
final DiscriminatorConverter converter = new UnifiedAnyDiscriminatorConverter<>(
2235-
getNavigableRole().append( EntityDiscriminatorMapping.DISCRIMINATOR_ROLE_NAME ),
2236-
domainJavaType,
2237-
underlingJdbcMapping.getRelationalJavaType(),
2238-
getSubclassByDiscriminatorValue(),
2239-
null,
2240-
factory.getMappingMetamodel()
2241-
);
2242-
2243-
//noinspection unchecked,rawtypes
2244-
return new DiscriminatorTypeImpl( underlingJdbcMapping, converter );
2216+
final BasicType<?> underlyingJdbcMapping = getDiscriminatorType();
2217+
return underlyingJdbcMapping == null
2218+
? null
2219+
: new DiscriminatorTypeImpl<>(
2220+
underlyingJdbcMapping,
2221+
new UnifiedAnyDiscriminatorConverter<>(
2222+
getNavigableRole()
2223+
.append( EntityDiscriminatorMapping.DISCRIMINATOR_ROLE_NAME ),
2224+
factory.getTypeConfiguration().getJavaTypeRegistry()
2225+
.resolveDescriptor( discriminatedType() ),
2226+
underlyingJdbcMapping.getRelationalJavaType(),
2227+
getSubclassByDiscriminatorValue(),
2228+
null,
2229+
factory.getMappingMetamodel()
2230+
)
2231+
);
22452232
}
22462233

2247-
@Override
2248-
public DiscriminatorMetadata getTypeDiscriminatorMetadata() {
2249-
return this::buildDiscriminatorType;
2234+
private Class<?> discriminatedType() {
2235+
return representationStrategy.getMode() == POJO
2236+
&& getEntityName().equals( getJavaType().getJavaTypeClass().getName() )
2237+
? Class.class
2238+
: String.class;
22502239
}
22512240

22522241
public static String generateTableAlias(String rootAlias, int tableNumber) {
@@ -5038,7 +5027,7 @@ protected EntityDiscriminatorMapping generateDiscriminatorMapping(PersistentClas
50385027
length,
50395028
precision,
50405029
scale,
5041-
(DiscriminatorType<?>) getTypeDiscriminatorMetadata().getResolutionType()
5030+
getDiscriminatorDomainType()
50425031
);
50435032
}
50445033
}

hibernate-core/src/main/java/org/hibernate/persister/entity/DiscriminatorMetadata.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Copyright Red Hat Inc. and Hibernate Authors
44
*/
55
package org.hibernate.persister.entity;
6+
67
import org.hibernate.metamodel.mapping.EntityDiscriminatorMapping;
78
import org.hibernate.metamodel.mapping.DiscriminatorConverter;
89
import org.hibernate.type.MetaType;

hibernate-core/src/main/java/org/hibernate/persister/entity/EntityPersister.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.hibernate.loader.ast.spi.MultiNaturalIdLoader;
4545
import org.hibernate.loader.ast.spi.NaturalIdLoader;
4646
import org.hibernate.metamodel.mapping.AttributeMapping;
47+
import org.hibernate.metamodel.mapping.DiscriminatorType;
4748
import org.hibernate.metamodel.mapping.EntityDiscriminatorMapping;
4849
import org.hibernate.metamodel.mapping.EntityMappingType;
4950
import org.hibernate.metamodel.mapping.ModelPart;
@@ -1501,13 +1502,29 @@ default String getSelectByUniqueKeyString(String[] propertyNames) {
15011502
*/
15021503
String selectFragment(String alias, String suffix);
15031504

1505+
/**
1506+
* The type of the discriminator, or {@code null} if the entity does not have a discriminator.
1507+
*
1508+
* @return a {@link DiscriminatorType} or {@code null}
1509+
*
1510+
* @see #getDiscriminatorType()
1511+
*
1512+
* @since 7
1513+
*/
1514+
DiscriminatorType<?> getDiscriminatorDomainType();
1515+
15041516
/**
15051517
* Retrieve the information needed to properly deal with this entity's discriminator
15061518
* in a query.
15071519
*
15081520
* @return The entity discriminator metadata
1521+
*
1522+
* @deprecated Since {@link DiscriminatorMetadata} is deprecated
15091523
*/
1510-
DiscriminatorMetadata getTypeDiscriminatorMetadata();
1524+
@Deprecated(since = "6.2", forRemoval = true)
1525+
default DiscriminatorMetadata getTypeDiscriminatorMetadata() {
1526+
return this::getDiscriminatorDomainType;
1527+
}
15111528

15121529
/**
15131530
* Given a property path, return the corresponding column name(s).

hibernate-core/src/main/java/org/hibernate/persister/entity/JoinedSubclassEntityPersister.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1084,7 +1084,7 @@ else if ( hasSubclasses() ) {
10841084
notNullColumnNames,
10851085
discriminatorValues,
10861086
discriminatorAbstract,
1087-
resolveDiscriminatorType()
1087+
getDiscriminatorDomainType()
10881088
);
10891089
}
10901090
}

hibernate-core/src/main/java/org/hibernate/sql/ast/tree/expression/EntityTypeLiteral.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public class EntityTypeLiteral
3131

3232
public EntityTypeLiteral(EntityPersister entityTypeDescriptor) {
3333
this.entityTypeDescriptor = entityTypeDescriptor;
34-
this.discriminatorType = (DiscriminatorType) entityTypeDescriptor.getTypeDiscriminatorMetadata().getResolutionType();
34+
this.discriminatorType = entityTypeDescriptor.getDiscriminatorDomainType();
3535
}
3636

3737
public EntityPersister getEntityTypeDescriptor() {
@@ -42,7 +42,7 @@ public EntityPersister getEntityTypeDescriptor() {
4242
// BasicValuedMapping
4343

4444
@Override
45-
public MappingModelExpressible getExpressionType() {
45+
public MappingModelExpressible<?> getExpressionType() {
4646
return this;
4747
}
4848

@@ -141,7 +141,7 @@ public void accept(SqlAstWalker sqlTreeWalker) {
141141
}
142142

143143
@Override
144-
public JavaType getExpressibleJavaType() {
144+
public JavaType<?> getExpressibleJavaType() {
145145
return discriminatorType.getExpressibleJavaType();
146146
}
147147
}

hibernate-core/src/test/java/org/hibernate/orm/test/cfg/persister/GoofyPersisterClassProvider.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@
4545
import org.hibernate.metamodel.mapping.AttributeMapping;
4646
import org.hibernate.metamodel.mapping.AttributeMappingsList;
4747
import org.hibernate.metamodel.mapping.AttributeMappingsMap;
48+
import org.hibernate.metamodel.mapping.DiscriminatorType;
4849
import org.hibernate.metamodel.mapping.EntityDiscriminatorMapping;
4950
import org.hibernate.metamodel.mapping.EntityIdentifierMapping;
5051
import org.hibernate.metamodel.mapping.EntityMappingType;
@@ -59,7 +60,6 @@
5960
import org.hibernate.metamodel.spi.EntityRepresentationStrategy;
6061
import org.hibernate.metamodel.spi.RuntimeModelCreationContext;
6162
import org.hibernate.persister.collection.CollectionPersister;
62-
import org.hibernate.persister.entity.DiscriminatorMetadata;
6363
import org.hibernate.persister.entity.EntityPersister;
6464
import org.hibernate.persister.entity.UniqueKeyEntry;
6565
import org.hibernate.persister.entity.mutation.DeleteCoordinator;
@@ -929,7 +929,7 @@ public String selectFragment(String alias, String suffix) {
929929
}
930930

931931
@Override
932-
public DiscriminatorMetadata getTypeDiscriminatorMetadata() {
932+
public DiscriminatorType<?> getDiscriminatorDomainType() {
933933
return null;
934934
}
935935

hibernate-core/src/test/java/org/hibernate/orm/test/jpa/ejb3configuration/PersisterClassProviderTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
import org.hibernate.metamodel.mapping.AttributeMapping;
4444
import org.hibernate.metamodel.mapping.AttributeMappingsList;
4545
import org.hibernate.metamodel.mapping.AttributeMappingsMap;
46+
import org.hibernate.metamodel.mapping.DiscriminatorType;
4647
import org.hibernate.metamodel.mapping.EntityDiscriminatorMapping;
4748
import org.hibernate.metamodel.mapping.EntityIdentifierMapping;
4849
import org.hibernate.metamodel.mapping.EntityMappingType;
@@ -58,7 +59,6 @@
5859
import org.hibernate.metamodel.spi.RuntimeModelCreationContext;
5960
import org.hibernate.orm.test.jpa.SettingsGenerator;
6061
import org.hibernate.persister.collection.CollectionPersister;
61-
import org.hibernate.persister.entity.DiscriminatorMetadata;
6262
import org.hibernate.persister.entity.EntityPersister;
6363
import org.hibernate.persister.entity.UniqueKeyEntry;
6464
import org.hibernate.persister.entity.mutation.DeleteCoordinator;
@@ -955,7 +955,7 @@ public String selectFragment(String alias, String suffix) {
955955
}
956956

957957
@Override
958-
public DiscriminatorMetadata getTypeDiscriminatorMetadata() {
958+
public DiscriminatorType<?> getDiscriminatorDomainType() {
959959
return null;
960960
}
961961

hibernate-core/src/test/java/org/hibernate/orm/test/legacy/CustomPersister.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@
4444
import org.hibernate.metamodel.mapping.AttributeMapping;
4545
import org.hibernate.metamodel.mapping.AttributeMappingsList;
4646
import org.hibernate.metamodel.mapping.AttributeMappingsMap;
47+
import org.hibernate.metamodel.mapping.DiscriminatorType;
4748
import org.hibernate.metamodel.mapping.EntityDiscriminatorMapping;
4849
import org.hibernate.metamodel.mapping.EntityIdentifierMapping;
4950
import org.hibernate.metamodel.mapping.EntityMappingType;
@@ -57,7 +58,6 @@
5758
import org.hibernate.metamodel.model.domain.NavigableRole;
5859
import org.hibernate.metamodel.spi.EntityRepresentationStrategy;
5960
import org.hibernate.metamodel.spi.RuntimeModelCreationContext;
60-
import org.hibernate.persister.entity.DiscriminatorMetadata;
6161
import org.hibernate.persister.entity.EntityPersister;
6262
import org.hibernate.persister.entity.UniqueKeyEntry;
6363
import org.hibernate.persister.entity.mutation.DeleteCoordinator;
@@ -1063,7 +1063,7 @@ public String selectFragment(String alias, String suffix) {
10631063
}
10641064

10651065
@Override
1066-
public DiscriminatorMetadata getTypeDiscriminatorMetadata() {
1066+
public DiscriminatorType<?> getDiscriminatorDomainType() {
10671067
return null;
10681068
}
10691069

0 commit comments

Comments
 (0)