Поиск JPA по ключу Api возвращает значение null - PullRequest
0 голосов
/ 25 мая 2020

Я работаю над приложением Spring Boot, и метод репозитория для получения с помощью apiKey возвращает null.

Это контроллер:

@RestController
@RequestMapping("/api/wetlab")
public class WetLabController {

    @Autowired
    WetLabService wetLabService;

    @GetMapping("/getAllWetlabsType")
    @PreAuthorize("hasRole('INTERNAL')")
    public List<WetLab> getAllWetlabs() {
        return wetLabService.getAllWetLabs();
    }

    @GetMapping("/{apiKey}")
    @PreAuthorize("hasRole('INTERNAL')")
    public WetLab getByApiKey(@PathVariable UUID apiKey) {
        return wetLabService.getByApiKey(apiKey);
    }

    @ExceptionHandler(DataRetrievalFailureException.class)
    void handleNotFound(HttpServletResponse response, Exception e) throws IOException {
        response.sendError(HttpStatus.NOT_FOUND.value(), e.getMessage());
    }

}

Это служба

@Service
public class WetLabService {

    @Autowired
    WetLabRepository wetLabRepo;

    public List<WetLab> getAllWetLabs() {
        List<WetLab> wetLabs = new ArrayList<>();
        wetLabRepo.findAll().forEach(wetLabs::add);
        return wetLabs;
    }

    public WetLab getByApiKey(UUID apiKey) {
        System.out.println(apiKey);
        WetLab wetlabOpt =  wetLabRepo.findByApiKey(apiKey);
        return wetlabOpt;
        // if (wetlabOpt.isPresent()) {
        // } else {
        //     throw new NotFoundException("WetLab not found");
        // }
    }

}

А это репо

@Repository
public interface WetLabRepository extends CrudRepository<WetLab, Long> {

    public WetLab findByApiKey(UUID apiKey);

}

А это класс wetlab

@Entity
@Table(name = "wetlab")
public class WetLab {
    @Id
    @Column(name = "id")
    @GeneratedValue(strategy = GenerationType.AUTO, generator = "wetLab_seq")
    @SequenceGenerator(name = "wetLab_seq", sequenceName = "wetLab_seq", allocationSize = 1)
    private Long id;

    @Column(name = "apiKey", updatable = true, nullable = false, unique = true, columnDefinition = "BINARY(16)")
    @NotNull
    private UUID apiKey;

    @Column(name = "name", length = 50)
    @NotNull
    private String name;

    @OneToMany
    private List<Plot> plot;

    // Accessors

    public WetLab() {
    }

    public WetLab(Long id, UUID apiKey, String name) {
        this.id = id;
        this.apiKey = apiKey;
        this.name = name;
    }


}

Другой метод работает без ошибок и переменная пути apiKey не равна нулю. Это странно, потому что в других проектах такой подход работал нормально ...

Спасибо

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