Rodrigo_Sasaki 20 de abr. de 2012
ja tentou usar a anotação @ForceDiscriminator na classe Pai?
obs: a solução é específica do hibernate, não sei se funciona em outras implementações
angelo.silvestre 20 de abr. de 2012
Tentei agora e continuou do mesmo jeito.
Rodrigo_Sasaki 20 de abr. de 2012
OpenJPA assumes your model employs a discriminator column if any of the following are true:
The base entity explicitly declares an inheritance type of SINGLE_TABLE.
The base entity sets a discriminator value.
The base entity declares a discriminator column.
De acordo com a explicação você precisa setar um DiscriminatorValue na classe genérica também
angelo.silvestre 20 de abr. de 2012
Agora o problema ficou diferente…
Eu uso um DAO Genérico e recupero o usuário logado da seguinte maneira:
Authentication authentication = ( Authentication ) SecurityContextHolder . getContext (). getAuthentication ();
if ( authentication != null ){
String email = authentication . getName ();
UsuarioDaoImp dao = new UsuarioDaoImp ();
Usuario usuario = dao . get ( "email" , email );
}
Quando eu seto o discriminador para aluno ele funciona normal, mas quando seto para administrador o dao retorna null.[youtube]
angelo.silvestre 22 de abr. de 2012
alguém já passou por algo semelhante?
Rodrigo_Sasaki 22 de abr. de 2012
Existe um administrador com esse email aí?
angelo.silvestre 22 de abr. de 2012
existe, eu faço o teste setando o campo na mão, quando seto para aluno ele recupera normalmente, quando seto para administrador ele retorna null;
O código desse método no dao é esse:
public T get ( String campo , Object valor ) {
try {
List < T > lista = HibernateUtil .getSession () .createCriteria ( oClass ) .add ( Restrictions .eq ( campo , valor )) .list () ;
if ( lista .isEmpty ()) {
return null ;
} else {
return ( T ) lista .get ( 0 ) ;
}
}finally {
HibernateUtil .closeSession () ;
}
}
No caso ele retorna a lista vazia.
angelo.silvestre 23 de abr. de 2012