[DUVIDA] Passar Objeto como parametro

4 respostas
karpyn
Tudo bom pessoal?! Alguem poderia me ajudar a passar um parâmetro tipo objeto para um metodo? o que acontece é o seguinte... estou tentando cadastrar FUNCIONARIO mas tenho que cadastrar tb a POSICAO desse funcionario mas a posicao fica em outra tabela por tanto que apenas cadastrar a Chave Estrangeira. Seguem o codigo. Ficarei muito grato se puderem me ajudar! Obrigado um abs a todos!
public class Main {

	public static void main(String[] args){


		EntityManagerFactory entityFactory = Persistence.createEntityManagerFactory("projtcc");
		EntityManager entityManager = entityFactory.createEntityManager();
		entityManager.getTransaction().begin();

		
		List p = entityManager.createNativeQuery("select idPosicao from Posicao where nomePosicao='Analista'").getResultList();
				
		consultas con = new consultas();
		con.cadastrarFuncionario("Wanessa Karpyn", 5, null, null, null, null, "Casado", null, "Brasileiro", "Rio de Janeiro", null, ??????); //deveria passar o objeto aqui

		entityManager.getTransaction().commit();
		entityManager.close();
		entityFactory.close();

	}


}
public class consultas {
	
	public void cadastrarFuncionario(String nome, int conceitoAtitude, BigDecimal cpf, Date dataAdmicao, Date dataDesligamento, Date dataNascimento,
			String estadoCivil, String motivoDesligamento, String nacionalidade, String naturalidade, BigDecimal rg, Posicao posicao){
		
		EntityManagerFactory entityFactory = Persistence.createEntityManagerFactory("projtcc");
		EntityManager entityManager = entityFactory.createEntityManager();
		entityManager.getTransaction().begin();
		
		
		
		Funcionario funcionario = new Funcionario();
		funcionario.setNome(nome);
		funcionario.setCpf(cpf);
		funcionario.setRg(rg);
		funcionario.setEstadoCivil(estadoCivil);
		funcionario.setNacionalidade(nacionalidade);
		funcionario.setNaturalidade(naturalidade);
		funcionario.setDataNascimento(dataNascimento);
		funcionario.setDataAdmicao(dataAdmicao);
		funcionario.setDataDesligamento(dataDesligamento);
		funcionario.setMotivoDesligamento(motivoDesligamento);
		funcionario.setConceitoAtitude(conceitoAtitude);
		funcionario.setPosicao(posicao);
	
		entityManager.persist(funcionario);
		
		
		entityManager.getTransaction().commit();
		entityManager.close();
		entityFactory.close();
		
	}

4 Respostas

xxjamisxx

fazer um metedo no dao para recupera o id desta posiçao
tipo ficaria assim no seu codigo

funcionario.setPosicao(posiçaoDao.getProcuraId(posicao));
paulo1911

Olá marciokarpyn,

Vc está usando Hibernate JPA?
O que seria esse atributo posição?

Para resover seu problema vc pode mapear o atributo posição na sua classe funcionario. Vc precisria mapear primeiramente a classe com o atributo posição em sua tabela correspondente e em seguida mapear um atributo posição na classe funcioanrio fazendo um join. Se vc mapear esse atributo posição como sendo do type CascadeAll e insertable true, mesmo que vc nao passe o atributo posicao dentro do objeto funcionario o hibernate entende que é para ele mesmo setar esse atributo e depois gravar o funcianario.

Segue abaixo um exemplo de código que talves te ajude…

public class consultas {  
          
        public void cadastrarFuncionario(Funcionario funcionario){  // Aqui vc vai passar o objeto funcionario Ex.:  con.cadastrarFuncionario(funcionario);
             
            EntityManagerFactory entityFactory = Persistence.createEntityManagerFactory("projtcc");  
            EntityManager entityManager = entityFactory.createEntityManager();  
            entityManager.getTransaction().begin();  
              
             try{
        
                  entityManager.persist(funcionario);  
                  entityManager.getTransaction().commit();  

            catch(Exception e){

                          entityManager.getTransaction().rollback();
                          e.printStackTrace();   

            }finnaly{

                          entityManager.close();  
                          entityFactory.close();  

            } 


             
  .     }

Fallow

paulo1911

Ola, esqueci do outro trecho!!

public static void main(String[] args){  
   
   
         EntityManagerFactory entityFactory = Persistence.createEntityManagerFactory("projtcc");  
         EntityManager entityManager = entityFactory.createEntityManager();  
         entityManager.getTransaction().begin();  
   
            try{

              List p = entityManager.createNativeQuery("select idPosicao from Posicao where nomePosicao='Analista'").getResultList();  
          
              if(p!null && !p.isEmpty()) {
              
               for(Funcionario f : p){

               Funcionario funcionario = new Funcionario();  

         funcionario.setNome("nomeDoFuncionario");  
         funcionario.setCpf(cpfDoFuncionario); 
        /** 
         * Continua os setters aqui
         */ 
         funcionario.setRg(rg);  
         funcionario.setEstadoCivil(estadoCivil);  
         funcionario.setNacionalidade(nacionalidade);  
         funcionario.setNaturalidade(naturalidade);  
         funcionario.setDataNascimento(dataNascimento);  
         funcionario.setDataAdmicao(dataAdmicao);  
         funcionario.setDataDesligamento(dataDesligamento);  
         funcionario.setMotivoDesligamento(motivoDesligamento);  
         funcionario.setConceitoAtitude(conceitoAtitude);
  
         funcionario.setPosicao(p.getPosicao()); //seta a posicao
          
         consultas con = new consultas();  
         con.cadastrarFuncionario(funcionario); //Agora está passando o funcionario !! 
   
         entityManager.getTransaction().commit(); 
         } else {

                 // Se cair aqui é porque nao achou posicao!!!

         }

         }catch(Exception e){
                           entityManager.getTransaction().rollbak(); 
                           e.printStackTrace(); 
                           entityManager.close();  
                           entityFactory.close();  
         }
     }

Fallow

karpyn

Pow, esse codigo ficou show. Ainda não testei pq estou no PC do trabalho, o meu projeto está no meu notebook pessoal.

Bom, so pra vc entender o que quero fazer:

Banco de Dados: Posicao é uma tabela e Funcionario é outra. Em Funcionario eu tenho uma FK que é o ID de Posição. Quando eu falo posição seria tipo “cargo”, a posição que um funcionario ocupa na empresa. ou seja quando eu cadastrar funcionario eu quero cadastrar a posição que esse funcionario ocupa setando o ID de posição. Ficou claro?

Obrigado por toda a ajuda, o pessoa do GUJ é muito solicito!

Criado 7 de janeiro de 2011
Ultima resposta 7 de jan. de 2011
Respostas 4
Participantes 3