I'm having some trouble with joined inheritance, my mappings are as follows but OpenJPA doesn't seem to be picking up my @DiscriminatorValue. Probably missing something obvious but can't see what... any suggestions much appreciated
@Entity @Table(name = "user_account") @Inheritance(strategy = InheritanceType.JOINED) @DiscriminatorColumn(name = "account_type", discriminatorType = DiscriminatorType.STRING) public abstract class UserAccount implements Serializable { ... @Entity @Table(name = "merchant") @DiscriminatorValue("MERCHANT") @PrimaryKeyJoinColumn(name = "merchant_id", referencedColumnName = "account_id") public class Merchant extends UserAccount { ... java.lang.ClassNotFoundException: Could not map discriminator value "MERCHANT" to any known subclasses of the requested class "my.app.model.UserAccount" (known discriminator values: [UserAccount]). at org.apache.openjpa.jdbc.meta.strats.ValueMapDiscriminatorStrategy.getClass(ValueMapDiscriminatorStrategy.java:98) at org.apache.openjpa.jdbc.meta.strats.InValueDiscriminatorStrategy.getClass(InValueDiscriminatorStrategy.java:121) at org.apache.openjpa.jdbc.meta.Discriminator.getClass(Discriminator.java:398) at org.apache.openjpa.jdbc.meta.strats.SuperclassDiscriminatorStrategy.getClass(SuperclassDiscriminatorStrategy.java:63) at org.apache.openjpa.jdbc.meta.Discriminator.getClass(Discriminator.java:398) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initializeState(JDBCStoreManager.java:397) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.initialize(JDBCStoreManager.java:333) at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112) at org.apache.openjpa.datacache.DataCacheStoreManager.initialize(DataCacheStoreManager.java:360) at org.apache.openjpa.kernel.DelegatingStoreManager.initialize(DelegatingStoreManager.java:112) at org.apache.openjpa.kernel.ROPStoreManager.initialize(ROPStoreManager.java:57) at org.apache.openjpa.kernel.BrokerImpl.initialize(BrokerImpl.java:1022) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:980) at org.apache.openjpa.kernel.BrokerImpl.find(BrokerImpl.java:902) at org.apache.openjpa.jdbc.kernel.JDBCStoreManager.load(JDBCStoreManager.java:1041) at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:280) at org.apache.openjpa.jdbc.sql.SelectImpl$SelectResult.load(SelectImpl.java:2381) at org.apache.openjpa.jdbc.sql.AbstractResult.load(AbstractResult.java:274) at org.apache.openjpa.jdbc.kernel.InstanceResultObjectProvider.getResultObject(InstanceResultObjectProvider.java:59) at org.apache.openjpa.lib.rop.EagerResultList.<init>(EagerResultList.java:36) at org.apache.openjpa.kernel.QueryImpl.toResult(QueryImpl.java:1251) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:1007) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:863) at org.apache.openjpa.kernel.QueryImpl.execute(QueryImpl.java:794) at org.apache.openjpa.kernel.DelegatingQuery.execute(DelegatingQuery.java:542) at org.apache.openjpa.persistence.QueryImpl.execute(QueryImpl.java:305) at org.apache.openjpa.persistence.QueryImpl.getResultList(QueryImpl.java:319)