@Modifying(clearAutomatically=true)@Transactional@Query(nativeQuery=true,value="UPDATE tb_pessoal_funcionarios SET salario = salario+(salario * :percentualAumento)/100 WHERE id IN (:funcionarioId) AND condicao <> ‘Inativo’ ")voidAlterarSalarioPorPercentual(DoublepercentualAumento,LongfuncionarioId);
porém se o usuário marcar um checkbox na tela, a query teria que ser:
Usando o @Query acredito que não, teria que ser as duas updates separados.
O que você pode fazer é usar uma implementação mais “braçal” caso queira criar somente uma única query que atenda os dois casos, aí poderia usar Criteria, Specification, JDBCTemplate e afins.
B
Bambatera1 like
Eu faria assim:
@Query(nativeQuery=true,value=“UPDATEtb_pessoal_funcionariosSETsalario=salario+(salario*:percentualAumento)/100WHEREidIN(:funcionarioId)ANDcondicao=:condicao")void alterarSalarioDemitidosPorPercentual(Double percentualAumento, Long funcionarioId, String condicao);
P
pmlm1 like
Era muito comum há (muitos) anos atrás ter este tipo de condicionais nas queries:
Com o parametro skipInactivo controlas se queres aplicar a todos (1) ou apenas aos não Inativos (0)
P
PRXGRVMVDXR1 like
bom dia a todos.
trabalhando em cima do checkbox e passando como parâmetro na URL, fiz desta forma e deu certo para mim:
@Modifying(clearAutomatically=true)@Transactional@Query(nativeQuery=true,value="UPDATE tb_pessoal_funcionarios SET salario = salario+(salario * :percentualAumento)/100 "+"WHERE id IN (:funcionarioId) "+"AND (:alterarFuncionariosDemitidos IS true OR condicao <> 'Inativo') ")voidAlterarSalarioPorPercentual(DoublepercentualAumento,LongfuncionarioId,BooleanalterarFuncionariosDemitidos);