Skip to content

Commit d647599

Browse files
sebersolebeikov
andcommitted
HHH-18733 - Add a prepareMappingModel phase to collection persisters
Co-authored-by: Christian Beikov <[email protected]>
1 parent 84cc5f0 commit d647599

23 files changed

+803
-379
lines changed

hibernate-core/src/main/java/org/hibernate/mapping/Any.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import org.hibernate.MappingException;
1313
import org.hibernate.boot.spi.MetadataBuildingContext;
1414
import org.hibernate.engine.jdbc.spi.JdbcServices;
15+
import org.hibernate.type.AnyDiscriminatorValueStrategy;
1516
import org.hibernate.type.AnyType;
1617
import org.hibernate.type.Type;
1718
import org.hibernate.type.MappingContext;
@@ -301,9 +302,13 @@ public void setKey(BasicValue keyDescriptor) {
301302
}
302303
}
303304

305+
/**
306+
* The discriminator {@linkplain Value}
307+
*/
304308
public static class MetaValue extends SimpleValue {
305309
private String typeName;
306310
private String columnName;
311+
private AnyDiscriminatorValueStrategy valueStrategy;
307312

308313
private final Consumer<Selectable> selectableConsumer;
309314

@@ -396,6 +401,10 @@ public boolean isValid(MappingContext mappingContext) {
396401
return columnName != null
397402
&& getType().getColumnSpan( mappingContext ) == 1;
398403
}
404+
405+
public AnyDiscriminatorValueStrategy getValueStrategy() {
406+
return valueStrategy;
407+
}
399408
}
400409

401410
public static class KeyValue extends SimpleValue {

hibernate-core/src/main/java/org/hibernate/mapping/MappingHelper.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import org.hibernate.resource.beans.spi.ManagedBean;
2323
import org.hibernate.resource.beans.spi.ManagedBeanRegistry;
2424
import org.hibernate.resource.beans.spi.ProvidedInstanceManagedBeanImpl;
25+
import org.hibernate.type.AnyDiscriminatorValueStrategy;
2526
import org.hibernate.type.AnyType;
2627
import org.hibernate.type.CollectionType;
2728
import org.hibernate.type.CustomCollectionType;
@@ -123,15 +124,22 @@ public static void injectParameters(Object type, Supplier<Properties> parameterA
123124
}
124125

125126
public static AnyType anyMapping(
126-
Type metaType,
127+
Type discriminatorType,
127128
Type identifierType,
128-
Map<Object, String> metaValueToEntityNameMap,
129+
Map<Object, String> explicitValeMappings,
129130
boolean lazy,
130131
MetadataBuildingContext buildingContext) {
131-
if ( metaValueToEntityNameMap != null ) {
132-
metaType = new MetaType( metaValueToEntityNameMap, metaType );
133-
}
132+
return anyMapping( discriminatorType, identifierType, AnyDiscriminatorValueStrategy.AUTO, explicitValeMappings, lazy, buildingContext );
133+
}
134134

135+
public static AnyType anyMapping(
136+
Type discriminatorType,
137+
Type identifierType,
138+
AnyDiscriminatorValueStrategy discriminatorValueStrategy,
139+
Map<Object, String> explicitValeMappings,
140+
boolean lazy,
141+
MetadataBuildingContext buildingContext) {
142+
final MetaType metaType = new MetaType( discriminatorType, discriminatorValueStrategy, explicitValeMappings );
135143
return new AnyType( buildingContext.getBootstrapContext().getTypeConfiguration(), metaType, identifierType, lazy );
136144
}
137145

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

Lines changed: 0 additions & 88 deletions
This file was deleted.

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

Lines changed: 0 additions & 151 deletions
This file was deleted.

0 commit comments

Comments
 (0)