Galera,
tenho uma classe com a seguinte anotação na classe Mensagem:
@Any(metaColumn = @Column(name = "tipo_autenticavel"), optional = false, fetch=FetchType.EAGER )
@AnyMetaDef(idType = "integer", metaType = "string", metaValues =
{
@MetaValue(value = "A", targetEntity = Aluno.class),
@MetaValue(value = "P", targetEntity = Professor.class),
@MetaValue(value = "F", targetEntity = Funcionario.class) })
@JoinColumn(name = "codigo_autenticavel")
private Autenticavel remetente;
Quando eu faço, vejam no comentario onde dá erro:
for(Mensagem m : mensagens){
Autenticavel a = m.getRemetente(); //ok
if(a instanceof Aluno){
System.out.println("ALUNO");
}
if(a instanceof Professor){
System.out.println("PROFESSOR");
}
if(a instanceof Funcionario){
System.out.println("FUNCIONARIO");
}
//todos esses IFs acima, ok.. ele identifica qual o tipo da interface.
System.out.println(a.getId()); //ERRO AQUI
System.out.println(a.getType());
if(m.getRemetente().getId() == this.getId() && m.getRemetente().getType() == this.getType() ){
msgs.add(m);
}
}
A mensagem de erro é:
Caused by: org.hibernate.LazyInitializationException: could not initialize proxy - no Session
podem ajudar?