Merge ou Update JPA

Tenho uma entidade onde gravo o estoque do produto e algumas outras informaçoes que podem ser alteradas no cadastro do produto, mas usando o merge a entidade inteira é atualizada inclusive o campo do saldo que não deveria receber o update através do cadastro usando o find e setando apenas os atributos o comando update gerado também afeta o campo saldo o que pode gerar uma inconsistência na informação, existe alguma forma de resolver isso sem precisar criar um UPDATE via HQL nos atributos desejados??

Veja o último exemplo desta página: http://www.objectdb.com/java/jpa/query/jpql/update que usa createQuery.

Ou se você souber SQL, é muito mais prático e eficiente executar o UPDATE via SQL nativo sob seu controle.

1 curtida

Obrigado ai pela dica!
Mas consegui achar uma solução simples apesar de usar uma Anotação do Hibernate, mas o resultado é satisfatório!
add @DynamicUpdate na Entidade


Segue ai o link com exemplo, pra quem tiver o mesmo problema, outra alternativa para fugir do SQL é usar o Criteria vi alguns exemplos também que parece ser uma alternativa bem interessante!

Utilizando de eufemismo, creio que o ajustado seria: não se sentir a vontade com sql.
De certa forma, considero bem interessante a argumentação alternativa de javaflex:

Té+

1 curtida

Também não entendo por que a geração atual foge tanto de SQL, como se isso fosse ruim. Já que utiliza banco de dados relacional, é a linguagem de alto nível para este tipo de banco de dados.

Na hora do problema você vai ter que lidar com SQL de qualquer forma, mas fora do seu controle imediato, devido o SQL ter sido gerado pelo intermédio de Criteria/HQL + Mapeamentos.

Na verdade não quero fugir, SQL é o que eu domino na verdade, mas o projeto que estou desenvolvendo a aplicação terá opção de rodar com Mysql ou Oracle, e usando SQL nativo fica complexo desenvolver, por isso optei pelo Hibernate + JPA, mas devido a complexidade de modelagem do projeto está sendo complicado, pois as funcionalidades do JPA Merge ou Find , acabam disparando vários Select o que pode comprometer o desempenho e estou avaliando usar pelo menos JPQL em algumas instruçoes de UPDATE.

Pode dar um exemplo do que fica complexo de desenvolver?

É porque esses frameworks só servem para apps do tipo CRUD.

1 curtida