Seguinte, tenho duas classes, uma (superclasse) chamada titulo e uma (subclasse) chamada obra. Vou simplifica-las aqui, então ignorem annotations básicas etc.
@Entity
@Table(name = "titulo")
@Inheritance(strategy = InheritanceType.SINGLE_TABLE)
public class Titulo {
@NotNull(message = "Valor não deve ser nulo.")
String nome;
}
public class Obra extends Titulo{
@NotNull(message = "Valor não deve ser nulo.")
String isbn;
}
No meu managed bean, eu declarei e instanciei um objeto do tipo Obra e possui todos os atributos das duas classes. O problema é o seguinte, no formulário jsf ao processar o submit, e mostrar a mensagem de erro quando ocorre funciona normalmente para o campo na classe mãe. Entretanto, o JPA Validation não mostra a mensagem de erro na página jsf dos atributos da subclasse Obra. O Validation funciona normalmente, e é apresentado no console da seguinte forma:
Advertência: /view/titles/form-exemplar.xhtml @120,74 actionListener="#{obraBean.salvar()}": javax.validation.ConstraintViolationException: Validation failed for classes [br.ueg.biblio.model.Obra] during persist time for groups [javax.validation.groups.Default, ] List of constraint violations:[ ConstraintViolationImpl{interpolatedMessage=‘Uma editora deve ser definida.’, propertyPath=editora, rootBeanClass=class br.ueg.biblio.model.Obra, messageTemplate=‘Uma editora deve ser definida.’} ConstraintViolationImpl{interpolatedMessage=‘Idioma de ser definido.’, propertyPath=idioma, rootBeanClass=class br.ueg.biblio.model.Obra, messageTemplate=‘Idioma de ser definido.’} ]
Eu não postei o código completo por ser muito extenso, acredito que o exemplo já é suficiente. Caso eu preencha os campos, funciona normal, somente a mensagem que não é mostrada na página.