I've followed an open Course on Spring web. Written some code to list all orders from a database and return them through a rest api. This works perfectly. Now I'm writing some code to give the ID of the order in the request, find 0 or 1 orders and return them. However, when there is no Order find with the given ID, a nullpointerexception is given. I can't find out what is causing this. I'm assuming the .orElse(null) statement. Please advise
Controller:
@RequestMapping("api/V1/order")
@RestController
public class OrderController {
    private final OrderService orderService;
    @Autowired
    public OrderController(OrderService orderService) {
        this.orderService = orderService;
    }
        
    @GetMapping(path = "{id}")
    public Order getOrderById(@PathVariable("id") int id) {
        return orderService.getOrderById(id)
                .orElse(null);
    }   
}
Service:
@Service
public class OrderService {
    private final OrderDao orderDao;
    @Autowired
    public OrderService(@Qualifier("oracle") OrderDao orderDao) {
        this.orderDao = orderDao;
    }
    public Optional<Order> getOrderById(int orderNumber) {
        return orderDao.selectOrderById(orderNumber);
    }    
}
Dao:
@Override
public Optional<Order> selectOrderById(int searchedOrderNumber) {
    final String sql = "SELECT \"order\", sender, receiver, patient, orderdate, duedate, paymentref, status, netprice from \"ORDER\" where \"order\" = ?";
    Order order = jdbcTemplate.queryForObject(sql, new Object[] {searchedOrderNumber}, (resultSet, i) -> {
        int orderNumber = resultSet.getInt( "\"order\"");
        String sender = resultSet.getString("sender");
        String receiver = resultSet.getString("receiver");
        String patient = resultSet.getString("patient");
        String orderDate = resultSet.getString("orderdate");
        String dueDate = resultSet.getString("duedate");
        String paymentRef = resultSet.getString("paymentref");
        String status = resultSet.getString("status");
        int netPrice = resultSet.getInt("netprice");
        return new Order(orderNumber,sender,receiver,patient,orderDate,dueDate,paymentRef,status,netPrice);
    });
    return Optional.ofNullable(order);
}