eu posso uma query que faz a validação no banco se a data e o id de usuário existem porem sempre que vou realizar a logica ele faz persist em vez de merge gostaria de saber se os codigos, estao errado ou algo do tipo abaixo os dois codigos o da query e o da logica espero que me ajudem.
@Override
public Optional<Folha> findByDateAndUser(LocalDate dataAtual, long idUser) {
StringBuilder jpql = new StringBuilder();
jpql.append(" select folha from Folha folha");
jpql.append(" where folha.data = :dataAtual and folha.usuario = " + idUser + " ");
TypedQuery<Folha> query = entityManager.createQuery(jpql.toString(), Folha.class);
query.setParameter("dataAtual", dataAtual);
return Optional.ofNullable(DAOUtil.getSingleResult(query));
}
Optional<Folha> findDateUser = folhaService.findByDateAndUser(novaFolha.getData(), novaFolha.getIdUser());
if (novaFolha.getData() == null) {
novaFolha.setData(data);
novaFolha.setUsuario(usuario);
folhaDAO.persistir(novaFolha);
} else if(novaFolha.getData() != null){
novaFolha.setEntrada(entrada);
folhaDAO.update(novaFolha);
} else if (novaFolha.getEntrada() != null){
novaFolha.setSaidaAlmoco(saidaAlmoco);
folhaDAO.update(novaFolha);
}