Мне интересно, есть ли способ проверить, содержит ли объект результата нативного запроса все нули. Например, следующий код пытается получить проекцию с использованием nativeQuery, но поскольку все поля имеют значение null, он выдает NPE.
Проекция:
public interface MetricsCountData {
Long getLikes ();
Long getComments ();
Long getImpressions ();
Long getShares ();
}
Метод репозитория:
@Query(nativeQuery = true, value = "select sum(impressions) as impressions, sum(likes) as likes, sum(comments) as comments, sum(shares) as shares " +
"from facebook_post_analytics As a " +
"JOIN " +
"(select post_id, max(id) As id " +
"from facebook_post_analytics " +
"where partner_id = :partnerId " +
"AND page_id = :pageId " +
"AND insights_epoch BETWEEN :startEpoch AND :endEpoch " +
"group by post_id) AS b " +
"ON a.id = b.id")
MetricsCountData findFacebookMetricsData(Long partnerId, String pageId, Long startEpoch, Long endEpoch);
Фрагмент в моем классе обслуживания:
MetricsCountData metricsCountData = dataRepository.findFacebookMetricsData(partnerId,pageId,startEpoch,endEpoch);
if(metricsCountData == null) //Useless Check
{
return;
}else{
return metricsCountData.getImpressions() + metricsCountData.getLikes(); //Representative Logic
}
Теперь есть способ легко проверить, являются ли все получатели проекций нулевыми, потому что metricsCountObject всегда ненулевой, и я неизменно иду внутрь другого потока и получаю NPE там.
Примечание: у меня есть много геттеров в моей проекции, поэтому не нужно делать предварительную нулевую проверку для каждого из них. Кроме того, я попытался использовать Object [], он тоже имеет ту же проблему.
Есть ли лучший способ?
Любая помощь будет высоко ценится.