猿问

可以根据春季的日期查找数据

我试图根据日期查找数据引发异常


java.lang.IllegalArgumentException:空


@SuppressWarnings("deprecation")

    @GetMapping("/product-DateList/{pathDate}")

    public ModelAndView getFindByDateOfPurchase(@PathVariable("pathDate") String pathDate) {

        Date convertDate = new Date(pathDate);

        //Date Converted according to dataBase Format 

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");

        String strDate = sdf.format(convertDate);

        Date date = null; 

        try {

            date =   DateFormat.getInstance().parse(strDate);

        } catch (ParseException pe) {

            pe.printStackTrace();

        }


        List<Product> dateofPurchaseList = grofersService.findByDateOfPurchase(date);


        Optional<List<Product>> optional = Optional.of(dateofPurchaseList);

        if (!optional.isPresent()) {

            logger.warn("Not Found Product");

            return new ModelAndView("notFound"); 

        }

        logger.info("Fetching Product according to Date");

        return new ModelAndView("productList", "dateofPurchaseList", dateofPurchaseList); 

    }

在google中搜索此问题找不到此类问题,如何根据日期查找数据。


holdtom
浏览 143回答 2
2回答

杨__羊羊

您发布的代码存在多个问题,更重要的是,这些问题无法编译。Date convertDate = new Date-这显然是错误的。无论如何,都存在其他几个问题:您似乎传入了一个路径变量pathDate,我认为您必须使用该变量进行搜索。该方法的主体中从未使用过此方法。相反,您(以错误的方式)创建了一个名为的新变量convertDate。没有明显的原因和用法,您将继续转换为字符串。然后,您继续创建一个名为的新变量date,尝试使用该strDate变量进行初始化。所有这些行动从根本上是错误的。同样,从String到date的转换也是错误的(因此为什么会收到IllegalArgumentException)。您不应该使用父类(DateFormat)执行日期转换,而是需要使用它的某些实现(DateFormat很抽象,直接实现是SimpleDateFormat)来执行转换。基于上述内容,您应该执行以下操作:从path变量中获取日期。使用SimpleDateFormat转换为日期对象(或者,您可以使用Java 8的LocalDate API)然后将此日期传递给您的服务方法,该服务方法将从存储库中获取结果。还有一些注意事项。不需要这样做:Optional<List<Product>> optional = Optional.of(dateofPurchaseList);假设您的服务方法返回产品列表或空列表(如果未找到),则后继dateofPurchaseList将永远不会为null。使用of静态创建器(假定为非null)将其包装为可选选项是错误的。您应该简单地调用List#isEmpty以仅检查返回的列表是否为空或包含任何值。

哈士奇WWW

在存储库界面中使用它@Query("select&nbsp;e&nbsp;from&nbsp;Entity&nbsp;where&nbsp;e.dateOfPurchase&nbsp;like&nbsp;%:dateOfPurchase%") List<Entity>&nbsp;findByDateOfPurchase(@Param("dateOfPurchase&nbsp;")String&nbsp;dateOfPurchase&nbsp;);
随时随地看视频慕课网APP

相关分类

Java
我要回答