Erro ao Fazer Update em tabela mysql na aplicação JSP

0 respostas
C

Estou desenvolvendo uma aplicação JSP com Struts 2, hibernate e banco mysql. A ferramenta que utilizo é o eclipse. Ocorre que quando vou fazer o update em um registro dá erro de duplicidade, pois o metodo que estou usando está fazendo insert ao invés de update. Quando é exibida a lista de métodos no eclipse não aparece o método update. Gostaria de saber se alguém conhece e pode me ajudar. Segue abaixo a minha classe DAO. O método é o último (Alterar).

package dao;

import java.util.List;

import javax.persistence.EntityManager;

import javax.persistence.EntityManagerFactory;

import javax.persistence.NoResultException;

import javax.persistence.Persistence;

import model.Defeito;

public class DefeitoDAO

{

EntityManagerFactory emf = Persistence

.createEntityManagerFactory(qts_persistence_unit);

EntityManager em = emf.createEntityManager();
@SuppressWarnings("unchecked")
public List<Defeito> listDefeitos()
{
	List<Defeito> defeitos;
	try{
		defeitos= em.createQuery(
				"select defeito from Defeito defeito")
				.getResultList();
		}
	catch (NoResultException e)
	{
		defeitos = null;
			
	}
		return defeitos;
}

public String findByDefeito(String defeito){
	String def;
	
	try{
	def=(String) em.createQuery(
			"select defeito from Defeito def1 where def1.defeito=?1")
			.setParameter(1, defeito)
			.getSingleResult();
	}catch (NoResultException e) {
		def = null;
		
	}
	if(def==null){
		def="este defeito nao existe";
	}
	return def;
}

public Defeito findById(Long id){
	Defeito defeito;
	try{
		defeito=(Defeito) em.createQuery(
			"select defeito from Defeito defeito where defeito.cod_defeito=?1")
			.setParameter(1, id)
			.getSingleResult();
	}catch (NoResultException e) {
		defeito = null;
		
	}
	return defeito;
}

public Boolean inserirDefeito(Defeito defeito) {
	em.getTransaction().begin();
	em.persist(defeito);
	em.getTransaction().commit();
	return true;
}

public Boolean excluirDefeito(Long id){
	em.getTransaction().begin();
	em.remove(findById(id));
	em.getTransaction().commit();
	return true;
}

public Boolean alterarDefeito(Long id,Defeito defeito){
	em.getTransaction().begin();
	Defeito defeito_old = findById(id);
	defeito_old = defeito;
	em.merge(defeito_old);
	em.getTransaction().commit();
	return true;
}

}

Criado 7 de setembro de 2009
Respostas 0
Participantes 1