Использование loadUserByUsername (принципала безопасности загрузки Spring.getName()) в качестве параметра в собственном запросе sql возвращает нулевой указатель?

Используя loadUserByUsername в качестве параметра в собственном запросе sql, все, что я пытаюсь, возвращает нулевой указатель.

Есть ли какой-то способ получить значение одного сопоставления запроса внутри другого сопоставления запроса?

У меня есть таблица результатов, но она должна быть отфильтрована, чтобы показать только результаты для региона авторизованных пользователей.

ResultsRepository

public interface ResultsRepository extends JpaRepository<Results, Long> {

    @Query(value ="SELECT RESULTS.LEAGUE, RESULTS.HOMETEAM,RESULTS.AWAYTEAM, RESULTS.RESULTSDATE  "
            + "FROM RESULTS INNER JOIN LEAGUELOCATIONS ON RESULTS.LOCATION=LEAGUELOCATIONS.LOCATION "
            + "WHERE LEAGUELOCATIONS.LOCATION=(SELECT LOCATION FROM USERLOCATIONS WHERE USERNAME= :username)", nativeQuery = true)
    List<Results> findByLocation(@Param("username") String username);

}

Контроллер результатов

@RestController
@RequestMapping(value = "/api")
public class ResultsController {

     @Autowired
     private ResultsRepository ResultsRepository;
     Authentication auth = SecurityContextHolder.getContext().getAuthentication();
     String loggedUsername = auth.getName();

     @RequestMapping(value = "/result", method = RequestMethod.GET)
     public List<Results> Results() {
        //return ResultsRepository.findAll();
        return ResultsRepository.findByLocation(bla);
}}

У меня есть служба пользователя для предоставления учетных данных пользователя из базы данных:

@Service
public class AppUserDetailsService implements UserDetailsService {

    @Autowired
    AppUserRepository appUserRepository;

    @Override
    public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
        AppUser appUser = appUserRepository.findOneByUsername(username);
        if (appUser == null) {
            throw new UsernameNotFoundException(username);
        }
        return appUser;
    }

}

У меня также есть страница для пользователей, обновляющая там детали, меняющие местоположение, откуда они получают результаты и т. Д. На этой странице получение зарегистрированного пользователя работает через использование

    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    String loggedUsername = auth.getName();

Или в полном отображении как так:

/**
 * Web service for getting all the appUsers in the application.
 * @return list of all AppUser
 */
@RequestMapping(value = "/users", method = RequestMethod.GET)
public List<AppUser> users() {
    Authentication auth = SecurityContextHolder.getContext().getAuthentication();
    String loggedUsername = auth.getName();
    System.out.println(loggedUsername);
    return appUserRepository.findAll();
}

Я предполагаю, что это как-то связано с тем фактом, что я использую List, а не List, но я не могу найти, как заставить отображаться зарегистрированного пользователя приложения.

ОШИБКИ:

Constructor threw exception; nested exception is java.lang.NullPointerException
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate 
Caused by: java.lang.NullPointerException: null

0 ответов

Другие вопросы по тегам