[RESOLVIDO] Update em todos os campos de uma tabela sem carregar objetos com Hibernate

3 respostas
faelbsr

Boa tarde, pode parecer uma dúvida idiota e talvez a solução seja bem simplória.

Estou precisando realizar um update em todos os campos de uma tabela e não quero carregar todos os objetos relacionados, alterar o atributo e persistir o objeto.

Tem como eu executar um sql diretamente no banco pelo Hibertate.

por exemplo:UPDATE tabela set campo = 1

Obrigado…

3 Respostas

Hebert_Coelho

Aqui mostra como fazer: JPA Consultas e Dicas.

Se chama batch update o que você está procurando.

faelbsr

Muito obrigado amigo… Vou pesquisar no link.

Tenha um bom feriado…

faelbsr

Resolvi meu problema usando NamedQuery…

Obrigado pela ajuda…

//ENTIDADE

@Entity
@Table(catalog="nome_banco",name = "graduacao_grade")
@NamedQuery(
    name="grade",
    query="UPDATE Grade g SET g.ativo = :at WHERE g.faculdade = :facul"
)
public class Grade implements java.io.Serializable {

...

}

//BEAN

public void fecharMatricula() {

        Session session = getSession();

        if (!session.getTransaction().isActive()) {
            session.getTransaction().begin();
        }

        Query namedQuery = session.getNamedQuery("grade");

        namedQuery.setParameter("facul", AppUtil.getFaculdade());
        namedQuery.setParameter("at", false);

        namedQuery.executeUpdate();
        namedQuery.executeUpdate();
                
        session.getTransaction().commit();

        session.flush();

        session.clear();
   
    }//end method
Criado 11 de outubro de 2012
Ultima resposta 11 de out. de 2012
Respostas 3
Participantes 2