Boa tarde, no método atualizarSalario existe uma interação na lista, e a chamada do método atualizar é realizada para cada objeto da interação, quando retiro o begin e commit, e adiciono a anotação @Transactional o merge não acontece, e nenhum erro é informado.
public class FuncionarioRepository implements Serializable {
    private static final long serialVersionUID = 1L;
    @Inject
    private EntityManager entity;
    @Transactional
    public void salvar(Funcionario funcionario) {
        if (funcionario.getId() == null) {
            entity.persist(funcionario);
            FacesUtil.addInfoMessage("Cadastrado com sucesso!");
        } else {
            entity.merge(funcionario);
            FacesUtil.addInfoMessage("Alterado com sucesso!");
        }
    }
    @Transactional
    public void remover(Funcionario funcionario) {
        try {
            entity.remove(funcionario);
            FacesUtil.addInfoMessage("Removido com sucesso!");
        } catch (Exception e) {
            e.printStackTrace();
            FacesUtil.addErrorMessage("Não foi possível concluir essa operação");
        }
    }
public void autualizarSalario(List<Funcionario> funcionarios) {
        funcionarios.forEach(funcionario -> atualizar(funcionario));
        FacesUtil.addInfoMessage("Salários foram atualizados!");
    }
    // nesse método, se coloco @Transactional, e retiro o begin e o commit, o merge não acontece.
    private void atualizar(Funcionario funcionario) {
        entity.getTransaction().begin();
        entity.merge(funcionario);
        entity.getTransaction().commit();
    }
    public List<Funcionario> listarTodos() {
        TypedQuery<Funcionario> query = entity.createQuery("Select f from Funcionario f order by f.nome", Funcionario.class);
        return query.getResultList();
    }
}
@InterceptorBinding
@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
public @interface Transactional {
}
@Interceptor
@Transactional
public class InterceptorTransactional implements Serializable {
    private static final long serialVersionUID = 1L;
    @Inject
    private EntityManager entity;
    @AroundInvoke
    public Object contextInterceptor(InvocationContext context) throws Exception {
        entity.getTransaction().begin();
        Object object = context.proceed();
        entity.getTransaction().commit();
        return object;
    }
}