tenemos las siguientes clasesCómo conseguir el DiscriminatorValue en tiempo de ejecución
@Entity
@Inheritance(strategy = InheritanceType.SINGLE_TABLE) // optional annotation as this is default
@DiscriminatorColumn(name = "apType", discriminatorType = DiscriminatorType.STRING, length = 255)
@DiscriminatorValue("AP")
public class ApplicationProcess {
}
Y esto
@Entity
@DiscriminatorValue("APS")
public class ApplicationProcessScheme extends ApplicationProcess {
}
Ahora necesito saber en tiempo de ejecución si el ApplicationProcess
es de DiscriminatorValue
AP or APS
. Dado que jpa lo maneja automáticamente, no tengo forma de obtener este valor.
Estamos llamando a un método que toma un ApplicationProcess
como parámetro, y quiero evitar el uso de instanceof
para verificar de qué tipo es. Sería más fresco si podía hacer algo como
applicationProcess.getApType().equals("AP");
@Shervin: Puedes, pero no es una buena idea, tu lógica no debería depender de eso . –
@Pascal: Creo que tengo que hacerlo. En el lado xhtml no tengo forma en la expresión EL para decir 'instanceof' (creo). Entonces podría necesitar esto. –
@Shervin: Lamento decirlo, pero parece que tienes un defecto importante en tu diseño, ** ver ** NUNCA tiene que depender de un valor discriminador (esto es cierto para el código comercial, pero aún más para la vista). –