title: java8, optional.orElse() not working but optional.orElseGet() work
body: <p>This is my code:</p>
  
  <pre><code>return repository.findFirstByFxDateAndTransCurrAndCrdhldBillCurr(
              LocalDate.parse(request.getDate()), request.getTransactionCurrency(), request.getBillingCurrency())
              .orElse(getCurrencyExchangeRateFromApi(request));
  </code></pre>
  
  <p>it not work, but I update .orElse to .orElseGet</p>
  
  <pre><code>return repository.findFirstByFxDateAndTransCurrAndCrdhldBillCurr(
              LocalDate.parse(request.getDate()), request.getTransactionCurrency(), request.getBillingCurrency())
              .orElseGet(() -&gt; getCurrencyExchangeRateFromApi(request));
  </code></pre>
  
  <p>It's work perfectly, I don't know the reason, is that bug of java8 ?</p>
  
  <p>I try to run again many times, nothing change, but I try to write an small example, optional of String instead of from repository, it's ok too.</p>