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
[code]
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);
}
}[/code]
está dando o seguinte erro
Caused by: org.hibernate.PersistentObjectException: detached entity passed to persist: br.com.banhotosa.Model.Usuario
[quote=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
[code]
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);
}
}[/code][/quote]
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
seria assim?
[code]
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);
}
} [/code]
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();
}
}
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