необязательный orElseThrow дает исключение нулевого указателя - PullRequest
0 голосов
/ 07 мая 2020

У меня есть этот метод:

public Tenant getTenant(String tenantId) throws TenantNotFoundException {
return tenantDatabaseService.findTenantById(tenantId)
    .orElseThrow(() -> new TenantNotFoundException("Tenant not found"));
}

tenantDatabaseService.findTenantById(tenantId) возвращает Optional:

public Optional<Tenant> findTenantById(String id) {
    return tenantRepository.findById(id);
}

Когда findById имеет значение null, я хочу, чтобы исключение было сгенерировано. Вместо этого я вижу, что выдается NullPointerException:

Failed to complete request: java.lang.NullPointerException: while trying to invoke the method 
java.util.Optional.orElseThrow(java.util.function.Supplier) of a null object returned from 
com.sap.gb.service.TenantDatabaseService.findTenantById(java.lang.String)

Здесь есть помощь?

Ответы [ 2 ]

1 голос
/ 07 мая 2020

Если вы имеете в виду, что tenantRepository.findById(id) иногда возвращает null, я бы адаптировал его следующим образом.

public Optional<Tenant> findTenantById(String id) {
    return Optional.ofNullable(tenantRepository.findById(id));
}
0 голосов
/ 21 мая 2020

Возникла проблема с реализацией myy jpa, и один из методов в цепочке, как упоминалось многими из вас, выдавал null. Спасибо за помощь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...