Skip to content
This repository was archived by the owner on Jan 14, 2025. It is now read-only.

Commit 4a55da1

Browse files
committed
OGM-1221 Add discriminator column and value in TupleTypeContext
1 parent 065d687 commit 4a55da1

File tree

4 files changed

+36
-3
lines changed

4 files changed

+36
-3
lines changed

core/src/main/java/org/hibernate/ogm/dialect/impl/TupleTypeContextImpl.java

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ public class TupleTypeContextImpl implements TupleTypeContext {
2626
private final List<String> selectableColumns;
2727
private final OptionsContext optionsContext;
2828

29+
private final String discriminatorColumn;
30+
private final Object discriminatorValue;
31+
2932
/**
3033
* Information of the associated entity stored per foreign key column names
3134
*/
@@ -36,12 +39,16 @@ public class TupleTypeContextImpl implements TupleTypeContext {
3639
public TupleTypeContextImpl(List<String> selectableColumns,
3740
Map<String, AssociatedEntityKeyMetadata> associatedEntityMetadata,
3841
Map<String, String> roles,
39-
OptionsContext optionsContext) {
42+
OptionsContext optionsContext,
43+
String discriminatorColumn,
44+
Object discriminatorValue) {
4045

4146
this.selectableColumns = Collections.unmodifiableList( selectableColumns );
4247
this.associatedEntityMetadata = Collections.unmodifiableMap( associatedEntityMetadata );
4348
this.roles = Collections.unmodifiableMap( roles );
4449
this.optionsContext = optionsContext;
50+
this.discriminatorColumn = discriminatorColumn;
51+
this.discriminatorValue = discriminatorValue;
4552
}
4653

4754
@Override
@@ -79,6 +86,16 @@ public Map<String, String> getAllRoles() {
7986
return roles;
8087
}
8188

89+
@Override
90+
public String getDiscriminatorColumn() {
91+
return discriminatorColumn;
92+
}
93+
94+
@Override
95+
public Object getDiscriminatorValue() {
96+
return discriminatorValue;
97+
}
98+
8299
@Override
83100
public String toString() {
84101
final StringBuilder builder = new StringBuilder( "Tuple Context {" );

core/src/main/java/org/hibernate/ogm/dialect/spi/TupleTypeContext.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,4 +79,18 @@ public interface TupleTypeContext {
7979
*/
8080
Map<String, String> getAllRoles();
8181

82+
/**
83+
* Get the name of the column with the discriminator.
84+
*
85+
* @return the name of the column or null if the discriminator is not column based
86+
*/
87+
String getDiscriminatorColumn();
88+
89+
/**
90+
* The discriminator value for dealing with inheritance; it might be {@code null} because some strategies don't need
91+
* it.
92+
*
93+
* @return the value of the discriminator. It can return {@code null}.
94+
*/
95+
Object getDiscriminatorValue();
8296
}

core/src/main/java/org/hibernate/ogm/persister/impl/OgmEntityPersister.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,9 @@ private TupleTypeContextImpl createTupleTypeContext() {
596596
selectableColumnNames( discriminator ),
597597
associatedEntityKeyMetadata,
598598
roles,
599-
optionsService.context().getEntityOptions( getMappedClass() )
599+
optionsService.context().getEntityOptions( getMappedClass() ),
600+
getDiscriminatorColumnName(),
601+
getDiscriminatorValue()
600602
);
601603
}
602604

core/src/test/java/org/hibernate/ogm/utils/GridDialectOperationContexts.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,7 @@ public TupleTypeContextBuilder optionContext(OptionsContext optionsContext) {
8181

8282
public TupleTypeContext buildTupleTypeContext() {
8383
return new TupleTypeContextImpl( Collections.unmodifiableList( selectableColumns ), Collections.unmodifiableMap( associatedEntityMetadata ),
84-
Collections.unmodifiableMap( roles ), optionsContext );
84+
Collections.unmodifiableMap( roles ), optionsContext, null, null );
8585
}
8686
}
8787

0 commit comments

Comments
 (0)