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();
}
}
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…
publicclassconsultas{publicvoidcadastrarFuncionario(Funcionariofuncionario){// Aqui vc vai passar o objeto funcionario Ex.: con.cadastrarFuncionario(funcionario);EntityManagerFactoryentityFactory=Persistence.createEntityManagerFactory("projtcc");EntityManagerentityManager=entityFactory.createEntityManager();entityManager.getTransaction().begin();try{entityManager.persist(funcionario);entityManager.getTransaction().commit();catch(Exceptione){entityManager.getTransaction().rollback();e.printStackTrace();}finnaly{entityManager.close();entityFactory.close();}.}
Fallow
paulo1911
Ola, esqueci do outro trecho!!
publicstaticvoidmain(String[]args){EntityManagerFactoryentityFactory=Persistence.createEntityManagerFactory("projtcc");EntityManagerentityManager=entityFactory.createEntityManager();entityManager.getTransaction().begin();try{Listp=entityManager.createNativeQuery("select idPosicao from Posicao where nomePosicao='Analista'").getResultList();if(p!null&&!p.isEmpty()){for(Funcionariof:p){Funcionariofuncionario=newFuncionario();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 posicaoconsultascon=newconsultas();con.cadastrarFuncionario(funcionario);//Agora está passando o funcionario !! entityManager.getTransaction().commit();}else{// Se cair aqui é porque nao achou posicao!!!}}catch(Exceptione){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!