Problema ao salvar objeto

galera o seguinte tenho a seguinte classe

@Stateless
@TransactionManagement(TransactionManagementType.BEAN)
public class FuncionarioBO extends GenericBO {

    @Resource
    private UserTransaction transaction;
    
    public void salvarAtualizar(Funcionario funcionario) throws Exception{
        try {
            this.transaction.begin();
            
            this.entityManager.merge(funcionario);
            
            funcionario.getFuncao().setIdPessoa(funcionario.getIdPessoa());
            
            this.entityManager.merge(funcionario.getFuncao());
            
            this.transaction.commit();
        } catch (Exception e) {
            this.transaction.rollback();
            throw e;
        }
    }

quanto chamo

this.entityManager.merge(funcionario);

a entidade funcionario fica sem o id ai naum tem como seguir pois preciso do id para poder setar no objeto funcao e salva-lo, sem isso naum da para fazer, alguem sabe porque o identifcado não é setado no obejeto funcionario

valeu…

Seguinte galera debugando um outro cadastro que funciona da minha aplicação percebi que ao fazer


entityManager.merger(cliente);

o seu id tambem fica nulo, entaum quer dizer que o jpa naum alimentou o atributo logo apos salva-lo no banco, bele mas no caso de antes de que eu preciso do id, o que eu faço para recuperar o id do funcionario que acabou de ser gravado na base de dados ???

Pq vc não faz um if? Se id == null || id <= 0 -> persist se não merge?

Tentei fazer isso Hebert mas mesmo assim continuou sem popular o id da minha classe…

mas apenas lembrando que minha classe funcionario extende da classe pessoa

naum sei se pode ter alguma coisa a ver mas enfim apenas para lembra…