Nous avons les classes suivantesComment obtenir le DiscriminatorValue au moment de l'exécution
@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 {
}
Et ce
@Entity
@DiscriminatorValue("APS")
public class ApplicationProcessScheme extends ApplicationProcess {
}
Maintenant, je dois savoir à l'exécution si le ApplicationProcess
est de DiscriminatorValue
AP or APS
. Puisqu'il est géré automatiquement par jpa, je n'ai aucun moyen d'obtenir cette valeur.
Nous appelons une méthode qui prend un ApplicationProcess
comme paramètre, et je veux éviter d'utiliser instanceof
pour vérifier de quel type il s'agit. Ce serait plus frais si je pouvais faire quelque chose comme
applicationProcess.getApType().equals("AP");
@Shervin: Vous pouvez, mais ce n'est pas une bonne idée, votre logique ne devrait pas compter sur cette . –
@Pascal: Je pense que je dois. Du côté xhtml, je n'ai aucun moyen dans l'expression EL de dire 'instanceof' (je pense). Donc je pourrais avoir besoin de ça. –
@Shervin: Je suis désolé de le dire mais il semble que vous ayez une faille majeure dans votre conception, la ** vue ** ne devrait JAMAIS avoir à s'appuyer sur une valeur discriminante (ceci est vrai pour le code business mais encore plus pour la vue). –