2015-12-10 2 views
1

У меня есть открытый интерфейс интерфейс IAllAccountsRepo расширяет CrudRepositorySpring JPA findByNameAndType запрос возвращает Null

и метод в том, что, как показано ниже

@Query(value = "SELECT * FROM account a where a.id in :id AND a.accountType = :accountType", nativeQuery=true) 
    public AccountEntity findByIdAndAccountType(@Param("id") String id, @Param("accountType") String accountType); 

Когда я называю этот метод в вспомогательном классе, где я буду получать список идентификаторов и I цикла через них и передать значение фильтра указанному выше методу, но у меня есть проблемы, когда нет записи, соответствующей запросу в базе данных.

Он просто останавливается, говоря null (когда нет записи в db). Я не хочу проходить через исключение, нужно игнорировать и продолжать, если я могу это сделать. Есть ли в любом случае, я могу закодировать его, чтобы игнорировать значение null и продолжить? или мне нужен запрос критериев или любой другой?

for (String id : accountIdList) { accountEntityTemp = iAllAccountsRepo.findByIdAndAccounttype(id, accounttype); System.out.println("bs" + accountEntityTemp.getId()); if (accountEntityTemp != null) { accountsEntityList.add(accountEntityTemp); } } accountEntityTemp = null для одного идентификатора и типа учетной записи, и я получаю следующую ошибку.

2015-12-10 14: 20: 03,784 WARN 10524 --- [NiO-8080-Exec-1] .m.m.a.ExceptionHandlerExceptionResolver: выполнение обработчика в результате исключения: нулевой

Спасибо.

ответ

3

Эмм ... Прежде всего, пожалуйста ..

@Query(value = "SELECT * FROM account a where a.id =:id AND a.accountType = :accountType", nativeQuery=true) 
public AccountEntity findByIdAndAccountType(@Param("id") String id, @Param("accountType") String accountType); 

Это сказанное ... Просто .. почему? Вы простирающийся crudrepository, так что вы можете также просто написать

AccountEntity findByIdAndAccountType(String id, String accountType) 

Если ваши атрибуты на AccountEntity бина называются Id AccountType или изменить идентификатор к Integer, так как я не знаю, его тип ..

плюс человек, некоторые заботы о потенциальных NPE .. вы сказали нам, что это возможно не accountentity не найдено ... пока вы

accountEntityTemp = iAllAccountsRepo.findByIdAndAccounttype(id, accounttype); 
     System.out.println("bs" + accountEntityTemp.getId()); /// Null pointer here potentially... 
     if (accountEntityTemp != null) { 
      accountsEntityList.add(accountEntityTemp); 
     } 

в большинстве изменить его на

accountEntityTemp = iAllAccountsRepo.findByIdAndAccounttype(id, accounttype); 
     if (accountEntityTemp != null) { 
       System.out.println("bs" + accountEntityTemp.getId()); 
      accountsEntityList.add(accountEntityTemp); 
     } 
+0

После прохождения весенних документов я изменил все, но проблема была в том, что заявление печати было глупо. Большое спасибо. – Arun

0

Я даже не знаю, почему вы используете функцию IN, когда вы передаете один аргумент для id. Тем не менее, метод, который вы хотите должен выглядеть следующим образом:

AccountEntity findByIdAndAccountType(Integer id, String accountType); 
Смежные вопросы