Condição do UPDATE no Hibernate

4 respostas
G

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?

4 Respostas

J

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…

G

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

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();
	}	
}
J

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:

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();
G

A chave da tabela precisa estar mapeada no Usuario.hbm.xml ou em algum outro lugar?

Criado 20 de março de 2007
Ultima resposta 20 de mar. de 2007
Respostas 4
Participantes 2