Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

JPA: Dúvida sobre merge

Tenho uma entidade

@Entity
class Entidade {
    private String nome;
    private int totalizador;
}

gostaria de atualizar a entidade chamando o método merge(), mas apenas atualizar o nome.

Como recebo os dados via post, nada impede de alguém alterar o totalizador na requisição.

Uma solução que encontrei é sempre substituir o totalizador antes de chamar o merge(), algo como:

class EntidadeDAO(){

    void atualiza(Entidade entidade){
        int totalizador =  buscaTotalizador(entidade);
        entidade.setTotalizador(totalizador);
        manager.merge(entidade);
    }
}

Mas gostaria de fazer isso de uma forma mais otimizada, ou seja, sem a necessidade de fazer uma consulta antes de atualizar uma entidade.

1 resposta
solução!

Não existe forma através do merge de atualizar apenas um campo dentro da sua entidade. Porém, é possível:

  • mapear uma entidade reduzida contendo apenas o(s) campo(s) que você deseja para essa determinada situação. Dessa forma, ao passar a entidade reduzida para o merge, apenas os campos mapeados serão atualizados.

  • utilizar update do Criteria API, disponível nas versões recentes do JPA. Não conheço a ponto de exemplificar, mas talvez uma pequisa rápida lhe ajude.