JPA-запрос с использованием собственного запроса возвращает ноль вместо списка сущностей - PullRequest
0 голосов
/ 19 февраля 2019

Использование spring-data-jpa.

@Entity
@Table(name="employees")
Class Employee{
.
.
.
.

}

public interface EmployeeRepository extends CrudRepository<Employee,Long> {
  @Query(value = "SELECT * from employees where org_id=:orgId ",nativeQuery = true)
    public List<Employee> findByOrgId(@Param("orgId") String orgId);
}

Когда я вызываю функцию хранилища, она ведет себя довольно странно.

В таблице «Сотрудники» есть две записи для org_id = 18.

Сценарий 1: Когда я передаю 18 этой функции, я могу получить результат типа List.Повторяясь, я могу получить ожидаемый результат

Сценарий 2 Когда я передаю идентификатор организации, которого нет в БД, он возвращает мне ноль.

Обработкаэто с использованием проверки на ноль.

Является ли проверка на ноль является правильным способом?Должен ли результат возвращать пустой список вместо нуля?

1 Ответ

0 голосов
/ 19 февраля 2019
  1. Нормальное поведение действительно возвращает пустой список, если результаты не найдены.Если List<Object> является возвращаемым значением метода в определенном интерфейсе, метод никогда не должен возвращать null.
  2. Проблема заключается в том, что параметру присваивается метод, и он нигде не используется в Запрос .По какой-то причине Spring решает вернуть Null в этом случае.Решение: удалите неиспользуемый параметр или используйте параметр в Запрос .
...