Boa noite,
meu primeiro projeto jsf + jpa + bootstrap, bem eu fiz um page para editar pessoa física utilizando método get, mas logo depois que chamo a função merge, a mesma persiste corretamente mas sempre apresentava nullpointerexception quando acionava o conversor de pessoa física. conseguir resolver isso mas agora apresenta outro problema, logo após o merge que persiste a alteração retorna para a page de edição mas caso tente inserir gera mensagem de salvo com sucesso mas quando verifico o bando não há nada inserido mas é como se tivesse pois o id da próxima inserção pula um contando com o id que não inseriu. Aguardo ajuda de vocês
Pessoa.java (2.0 KB)
PessoaFisica.java (1.7 KB)
PessoaFisicaBean.java (2.7 KB)
PessoaConverter.java (1.5 KB)
pessoaFisicaEditar.xhtml (4.3 KB)
PessoaFisicaRepository.java (1.6 KB)
PessoaFisicaService.java (2.1 KB)
Não olhei todos os arquivos, mas em algum local vc está gerenciando a transação? No Repository não vi isso e nem no Service. Pro JPA funcionar você precisa iniciar uma transação antes de persistir ou remover seus objetos. Exemplo:
public void insertRepository(PessoaFisica pessoaFisica) { entityManager.getTransaction().begin(); entityManager.persist(pessoaFisica); entityManager.getTransaction().commit(); }
oi eu utilizo open session in view, assim eu consigo pegar a entitymanager,abrir e fechar tudo através da classe FilterTool, com apenas uma EntityManager entityManager = (EntityManager) FacesTool.getRequestAttribute(“session”);
FilterTool.java (1.3 KB)
Bom dia.
Gente conseguir solucionar. após editar um objeto o sistema retornava para mesma xhtml, assim eu poderia cadastrar um novo objeto, mas quando tentava persistir dava rollback pois a Pessoa.class possui um atributo chamado datacadastro que é setada por meio de actionListener e como esse atributo possui um anotação do jpa @Column(name = “data_cadastro”, nullable = false) como no xhtml de edição não possui actionListener somente no xhtml de cadastro minha classe FilterTool trabalhava dando um rollback. Por fim a solução inicial foi apenas chamar meu
actionListener="#{PessoaFisicaBean.actionListenerGetDataRegister}", agora irei fazer um regra de negocio caso objeto já possua um dataCadastro minha actionListenerGetDataRegister não retorne um novo valor. Muito obg @fredericomaia10.