Skip to content

Commit 1c96e88

Browse files
fax4evermarko-bekhta
authored andcommitted
HSEARCH-3277 Get decimal scale from size instead of the column
1 parent 2401ada commit 1c96e88

File tree

2 files changed

+27
-2
lines changed

2 files changed

+27
-2
lines changed

mapper/orm/src/main/java/org/hibernate/search/mapper/orm/mapping/impl/HibernateOrmMappingPropertiesMetadataContributor.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@
1010
import java.util.List;
1111
import java.util.StringTokenizer;
1212

13+
import org.hibernate.boot.Metadata;
14+
import org.hibernate.dialect.Dialect;
15+
import org.hibernate.engine.jdbc.Size;
1316
import org.hibernate.mapping.Column;
1417
import org.hibernate.mapping.Component;
1518
import org.hibernate.mapping.OneToMany;
@@ -95,13 +98,17 @@ else if ( value instanceof SimpleValue ) {
9598

9699
private void collectScale(PojoAdditionalMetadataCollectorPropertyNode collector, Value value) {
97100
Iterator<Selectable> columnIterator = value.getColumnIterator();
101+
Dialect dialect = basicTypeMetadataProvider.getDialect();
102+
Metadata metadata = basicTypeMetadataProvider.getMetadata();
103+
98104
while ( columnIterator.hasNext() ) {
99105
Selectable mappedColumn = columnIterator.next();
100106
if ( !(mappedColumn instanceof Column) ) {
101107
continue;
102108
}
103109
Column column = (Column) mappedColumn;
104-
Integer scale = column.getScale();
110+
Size size = column.getColumnSize( dialect, metadata );
111+
Integer scale = size.getScale();
105112
if ( scale == null ) {
106113
continue;
107114
}

mapper/orm/src/main/java/org/hibernate/search/mapper/orm/model/impl/HibernateOrmBasicTypeMetadataProvider.java

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
import org.hibernate.MappingException;
1818
import org.hibernate.boot.Metadata;
19+
import org.hibernate.dialect.Dialect;
1920
import org.hibernate.mapping.Component;
2021
import org.hibernate.mapping.PersistentClass;
2122
import org.hibernate.mapping.Property;
@@ -34,7 +35,7 @@ public static HibernateOrmBasicTypeMetadataProvider create(Metadata metadata) {
3435
new TreeSet<>( Comparator.comparing( PersistentClass::getEntityName ) );
3536
persistentClasses.addAll( metadata.getEntityBindings() );
3637

37-
Builder builder = new Builder();
38+
Builder builder = new Builder( metadata );
3839

3940
for ( PersistentClass persistentClass : persistentClasses ) {
4041
collectPersistentClass( builder, persistentClass );
@@ -221,6 +222,8 @@ private static HibernateOrmTypeModelFactory<?> collectEmbedded(Builder metadataP
221222
}
222223
}
223224

225+
private final Metadata metadata;
226+
224227
private final Map<String, PersistentClass> persistentClasses;
225228
private final Map<Class<?>, HibernateOrmBasicClassTypeMetadata> classTypeMetadata;
226229
private final Map<String, HibernateOrmBasicDynamicMapTypeMetadata> dynamicMapTypeMetadata;
@@ -229,13 +232,22 @@ private static HibernateOrmTypeModelFactory<?> collectEmbedded(Builder metadataP
229232
private final HibernateOrmRawTypeIdentifierResolver typeIdentifierResolver;
230233

231234
private HibernateOrmBasicTypeMetadataProvider(Builder builder) {
235+
this.metadata = builder.metadata;
232236
this.persistentClasses = builder.persistentClasses;
233237
this.classTypeMetadata = builder.classTypeMetadata;
234238
this.dynamicMapTypeMetadata = builder.dynamicMapTypeMetadata;
235239
this.jpaEntityNameToHibernateOrmEntityName = builder.jpaEntityNameToHibernateOrmEntityName;
236240
this.typeIdentifierResolver = builder.typeIdentifierResolverBuilder.build();
237241
}
238242

243+
public Metadata getMetadata() {
244+
return metadata;
245+
}
246+
247+
public Dialect getDialect() {
248+
return metadata.getDatabase().getDialect();
249+
}
250+
239251
public Collection<PersistentClass> getPersistentClasses() {
240252
return persistentClasses.values();
241253
}
@@ -267,6 +279,8 @@ Set<String> getKnownDynamicMapTypeNames() {
267279
}
268280

269281
private static class Builder {
282+
private final Metadata metadata;
283+
270284
private final Map<String, PersistentClass> persistentClasses = new LinkedHashMap<>();
271285
private final Map<Class<?>, HibernateOrmBasicClassTypeMetadata> classTypeMetadata = new LinkedHashMap<>();
272286
private final Map<String, HibernateOrmBasicDynamicMapTypeMetadata> dynamicMapTypeMetadata = new LinkedHashMap<>();
@@ -275,6 +289,10 @@ private static class Builder {
275289
private final HibernateOrmRawTypeIdentifierResolver.Builder typeIdentifierResolverBuilder =
276290
new HibernateOrmRawTypeIdentifierResolver.Builder();
277291

292+
public Builder(Metadata metadata) {
293+
this.metadata = metadata;
294+
}
295+
278296
HibernateOrmBasicTypeMetadataProvider build() {
279297
return new HibernateOrmBasicTypeMetadataProvider( this );
280298
}

0 commit comments

Comments
 (0)