Skip to content

Commit ec89e86

Browse files
committed
HHH-6485 Add support for @DiscriminatorFormula
1 parent 236ba1d commit ec89e86

File tree

5 files changed

+54
-33
lines changed

5 files changed

+54
-33
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package org.hibernate.metamodel.source.annotations.attribute;
2+
3+
import org.hibernate.metamodel.source.binder.DerivedValueSource;
4+
5+
/**
6+
* @author Strong Liu
7+
*/
8+
public class DerivedValueSourceImpl implements DerivedValueSource {
9+
private final FormulaValue formulaValue;
10+
11+
DerivedValueSourceImpl(FormulaValue formulaValue) {
12+
this.formulaValue = formulaValue;
13+
}
14+
15+
@Override
16+
public String getExpression() {
17+
return formulaValue.getExpression();
18+
}
19+
20+
@Override
21+
public String getContainingTableName() {
22+
return formulaValue.getContainingTableName();
23+
}
24+
}

hibernate-core/src/main/java/org/hibernate/metamodel/source/annotations/attribute/DiscriminatorSourceImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,9 @@ public boolean isInserted() {
4949

5050
@Override
5151
public RelationalValueSource getDiscriminatorRelationalValueSource() {
52-
return entityClass.getDiscriminatorFormula() != null ? entityClass.getDiscriminatorFormula() : new ColumnValuesSourceImpl(
53-
entityClass.getDiscriminatorColumnValues()
54-
);
52+
return entityClass.getDiscriminatorFormula() != null ?
53+
new DerivedValueSourceImpl( entityClass.getDiscriminatorFormula() )
54+
: new ColumnValuesSourceImpl( entityClass.getDiscriminatorColumnValues() );
5555
}
5656

5757
@Override
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package org.hibernate.metamodel.source.annotations.attribute;
2+
3+
/**
4+
* @author Strong Liu
5+
*/
6+
public class FormulaValue {
7+
private String tableName;
8+
private final String expression;
9+
10+
public FormulaValue(String tableName, String expression) {
11+
this.tableName = tableName;
12+
this.expression = expression;
13+
}
14+
15+
public String getExpression() {
16+
return expression;
17+
}
18+
19+
public String getContainingTableName() {
20+
return tableName;
21+
}
22+
}

hibernate-core/src/main/java/org/hibernate/metamodel/source/annotations/entity/EntityClass.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -49,12 +49,13 @@
4949
import org.hibernate.metamodel.binding.Caching;
5050
import org.hibernate.metamodel.binding.CustomSQL;
5151
import org.hibernate.metamodel.binding.InheritanceType;
52-
import org.hibernate.metamodel.relational.Identifier;
5352
import org.hibernate.metamodel.source.annotations.AnnotationBindingContext;
5453
import org.hibernate.metamodel.source.annotations.HibernateDotNames;
5554
import org.hibernate.metamodel.source.annotations.JPADotNames;
5655
import org.hibernate.metamodel.source.annotations.JandexHelper;
5756
import org.hibernate.metamodel.source.annotations.attribute.ColumnValues;
57+
import org.hibernate.metamodel.source.annotations.attribute.DerivedValueSourceImpl;
58+
import org.hibernate.metamodel.source.annotations.attribute.FormulaValue;
5859
import org.hibernate.metamodel.source.binder.ConstraintSource;
5960
import org.hibernate.metamodel.source.binder.DerivedValueSource;
6061
import org.hibernate.metamodel.source.binder.TableSource;
@@ -97,7 +98,7 @@ public class EntityClass extends ConfiguredClass {
9798
private String proxy;
9899

99100
private ColumnValues discriminatorColumnValues;
100-
private DerivedValueSource discriminatorFormula;
101+
private FormulaValue discriminatorFormula;
101102
private Class<?> discriminatorType;
102103
private String discriminatorMatchValue;
103104
private boolean isDiscriminatorForced = true;
@@ -146,7 +147,7 @@ public ColumnValues getDiscriminatorColumnValues() {
146147
return discriminatorColumnValues;
147148
}
148149

149-
public DerivedValueSource getDiscriminatorFormula() {
150+
public FormulaValue getDiscriminatorFormula() {
150151
return discriminatorFormula;
151152
}
152153

@@ -355,7 +356,7 @@ private void processDiscriminator() {
355356
Class<?> type = String.class; // string is the discriminator default
356357
if ( discriminatorFormulaAnnotation != null ) {
357358
String expression = JandexHelper.getValue( discriminatorFormulaAnnotation, "value", String.class );
358-
discriminatorFormula = new FormulaImpl( getPrimaryTableSource().getExplicitTableName(), expression );
359+
discriminatorFormula = new FormulaValue( getPrimaryTableSource().getExplicitTableName(), expression );
359360
}
360361
discriminatorColumnValues = new ColumnValues( null ); //(stliu) give null here, will populate values below
361362
discriminatorColumnValues.setNullable( false ); // discriminator column cannot be null

hibernate-core/src/main/java/org/hibernate/metamodel/source/annotations/entity/FormulaImpl.java

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

0 commit comments

Comments
 (0)