Update

8 respostas
rafaelshock

Boa tarde galera estou tentando fazer um UPDATE, mas está dando erro, alguém pode me ajudar?

public void atuliazar (Usuario codigo_usuario){
            EntityManager em = EntityManagerUtil.getEntityManager();
            try {
                
                em.getTransaction().begin();
                
                Query query = em.createQuery(
                        "UPDATE Usuario SET nome_usuario=?, cargo=?, login=?, senha=? WHERE codigo_usuario=?")
                        .setParameter(1, codigo_usuario);
                
                        query.executeUpdate();

			em.getTransaction().commit();
                        
            } catch (Exception e) {
                
                e.printStackTrace();
			em.getTransaction().rollback();

		} finally {

			em.close();

            }
        }

classe de teste

public class TestLogin {
	public static void main(String[] args) {

		Usuario u = new Usuario();
                
		u.setCodigo_usuario(6);
		u.setNome_usuario("teste");
                u.setCargo("dev");
                u.setLogin("Balabas");
		u.setSenha("master");
                
		UsuarioDAO d = new UsuarioDAO();
		d.atuliazar(u);

	}
}

8 Respostas

rafaelshock

alguém?

rafaelshock

está dando o seguinte erro

Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.banhotosa.Model.Usuario
A
rafaelshock:
Boa tarde galera estou tentando fazer um UPDATE, mas está dando erro, alguém pode me ajudar?
public void atuliazar (Usuario codigo_usuario){
            EntityManager em = EntityManagerUtil.getEntityManager();
            try {
                
                em.getTransaction().begin();
                
                Query query = em.createQuery(
                        "UPDATE Usuario SET nome_usuario=?, cargo=?, login=?, senha=? WHERE codigo_usuario=?")
                        .setParameter(1, codigo_usuario);
                
                        query.executeUpdate();

			em.getTransaction().commit();
                        
            } catch (Exception e) {
                
                e.printStackTrace();
			em.getTransaction().rollback();

		} finally {

			em.close();

            }
        }

classe de teste

public class TestLogin {
	public static void main(String[] args) {

		Usuario u = new Usuario();
                
		u.setCodigo_usuario(6);
		u.setNome_usuario("teste");
                u.setCargo("dev");
                u.setLogin("Balabas");
		u.setSenha("master");
                
		UsuarioDAO d = new UsuarioDAO();
		d.atuliazar(u);

	}
}

Olá.

Amigo, não tenho certeza, mas na tua query você está pedindo 5 parâmetros, porém está passando apenas 2.

Tente modificar sua query ou adicionar os parâmetros restantes.

Att.

Artur Martini

rafaelshock

seria assim?

public void atualizar(Usuario usuario){
        String sql = "update Usuario set Nome_usuario=? , Cargo=?, Login=?, Senha=? where Codigo_usuario=?";
        
        try {  
            PreparedStatement stmt = connection.prepareStatement(sql);  
            stmt.setString(1, usuario.getNome_usuario());  
            stmt.setString(2, usuario.getCargo());  
            stmt.setString(3, usuario.getLogin());  
            stmt.setString(4, usuario.getSenha());
            stmt.setInt(5, usuario.getCodigo_usuario());  
  
            // excutar  
            stmt.execute();  
  
            // fechar a conexao  
            stmt.close();  
  
        } catch (SQLException e) {  
            throw new RuntimeException(e);  
        }  
  
    }
rafaelshock

alguém?

dudu_sps

faz assim e posta o erro que esta dando aqui

public void atualizar(Usuario usuario){  
       String sql = "update Usuario set Nome_usuario=? , Cargo=?, Login=?, Senha=? where Codigo_usuario=?";  
         
       try {    
           PreparedStatement stmt = connection.prepareStatement(sql);    
           stmt.setString(1, usuario.getNome_usuario());    
           stmt.setString(2, usuario.getCargo());    
           stmt.setString(3, usuario.getLogin());    
           stmt.setString(4, usuario.getSenha());  
           stmt.setInt(5, usuario.getCodigo_usuario());    
  
           // excutar    
           stmt.execute();    
  
           // fechar a conexao    
           stmt.close();    
  
       } catch (SQLException e) {    
           e.printStackTrace();
       }    
  
   }
rafaelshock
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
	at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.banhotosa.Model.Usuario
	at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:141)
	at org.hibernate.event.internal.DefaultPersistEventListener.onPersist(DefaultPersistEventListener.java:78)
	at org.hibernate.internal.SessionImpl.firePersist(SessionImpl.java:853)
	at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:827)
	at org.hibernate.internal.SessionImpl.persist(SessionImpl.java:831)
	at org.hibernate.ejb.AbstractEntityManagerImpl.persist(AbstractEntityManagerImpl.java:875)
	... 130 more
rafaelshock

alguém?

Criado 30 de outubro de 2013
Ultima resposta 4 de nov. de 2013
Respostas 8
Participantes 3