@Entity (name="PessoaFisica")
@DiscriminatorValue("F")
public class PessoaFisica extends Pessoa{
private Sexo sexo;
private EstadoCivil estadoCivil;
private Date dataNascimento;
Passei o olho e num sei se entendi direito, mas se for o que penso, vc tem que retornar um objeto no save do seu DAO, pegar ele e ler o atributo ID retornado.
public Object save(final Object object) {
try {
final Session s = getSession(false);
s.save(object);
s.flush();
return object; //retornei aqui o que foi salvo, tá vendo?
} catch (final HibernateException ex) {
TOBaseHibernateDao.logger.error(ex);
throw convertHibernateAccessException(ex);
}
}
Bom, se me enganei, desculpa gente, foi o que entendi da pergunta.
O problema é que o id da classe Usuario precisa ser atribuido manualmente, ou então você deve colocar o @GeneratedValue. Antes de inserir no banco, a chave deve estar populada, ou o hibernate tem que saber como gerar isso pra vc. Sacou?
Bem, acho que entendi a mesma coisa do nosso amigo DJemacao, e se vc retornar o objeto que persistiu ao final do save vai funcionar, pq mesmo com auto-incremento ele vai popular a field correspondente a chave primária sacou, dae vc vai ter o objeto que persistiu para poder pegar a chave primaria que vc precisa… Bem, caso não seja isso que deseja da uma outra explicada… vlws