Ola a todos.
Minha dúvida está na utilização do update com o hibernate.
Gostaria de saber onde devo colocar a condição do update?
Ola a todos.
Minha dúvida está na utilização do update com o hibernate.
Gostaria de saber onde devo colocar a condição do update?
Você não precisa colocar condição nenhuma, o Hibernate já sabe gerar o SQL correto pra alterar seu registro, pra fazer um update simplesmente faça:
Ou alguns outros métodos que também estão disponíveis…
Realmente ainda não compreendi.
Preciso saber exatamente o que acontece porque um update pode ter a partir de sua condição a ordem para atualizar mais que um registro com um único comando.
Vamos conversar através de um simples exemplo ok? Exemplo:
Tabela usuario
Campos id, nome, cidade, estado
Como que o sessao.update(objeto); “sabe” que eu quero alterar todos os registros com estado = ‘SP’, para ‘PR’ ??
Estou fazendo assim:
UsuarioDAO dao = new UsuarioDAO();
Usuario usuario = new Usuario(1,'GIOVANI','CURITIBA','PR');
dao.UsAlterar(usuario);
Classe UsuarioDAO
[code]public class UsuarioDAO{
private SessionFactory factory;
public UsuarioDAO() throws Exception{
factory = new Configuration().configure().buildSessionFactory();
}
public void UsAlterar(Usuario us) throws Exception {
Session sessao = factory.openSession();
sessao.update(us);
sessao.flush();
sessao.close();
}
}[/code]
Na realidade você não vai fazer esse tipo de alteração com o update, o update sempre altera o registro com base na chave dele. Geralmente o pessoal só usa isso, mas se você realmente precisa que ele faça esse update dessa forma, então você teria que usar uma query HQL, assim:
[code]String hql= "update Usuario u set u.estado= :novo where u.estado = :antigo";
Query query = sessao.createQuery(hql);
query.setString("novo", "PR");
query.setString("antigo", "SP");
query.executeUpdate();[/code]
A chave da tabela precisa estar mapeada no Usuario.hbm.xml ou em algum outro lugar?