How to access discriminator column in JPA How to access discriminator column in JPA sqlite sqlite

How to access discriminator column in JPA


If a discriminator column makes sense with InheritanceType.JOINED is worth discussing. I would tend to omit it on joined strategy and only use it with InheritanceType.SINGLE_TABLE.

Nevertheless, it's possible to map it without duplicate column errors.

If your superclass entity has an inheritance / discriminator definition like:

@Inheritance(strategy = InheritanceType.SINGLE_TABLE)@DiscriminatorColumn(name = "subtype_id", discriminatorType = DiscriminatorType.INTEGER)

You just have to adjust the mapping to not update the value as usual by setting it readonly:

@Column(name="subtype_id", insertable = false, updatable = false)protected int subTypeId;public int getSubTypeId() {    return subTypeId;}

Now you can access the discriminator value of the entity.


Same column name is used for relation FK to FeatureSubtype.Use other name for discriminator or don't use discriminator at all.

In Hibernate, discriminator column on joined inheritance is supported but not required. Hibernate is querying all subtables to determine correct subclass.


Or use for example:

th:text="${OBJECTNAME.class.getSimpleName()}"

This is far simple the using @DiscriminatorColumn...