为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

holdtom 2021-05-21 16:06:44
我试图根据日期查找数据引发异常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中搜索此问题找不到此类问题,如何根据日期查找数据。
查看完整描述

2 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

您发布的代码存在多个问题,更重要的是,这些问题无法编译。

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以仅检查返回的列表是否为空或包含任何值。


查看完整回答
反对 回复 2021-05-26
?
哈士奇WWW

TA贡献1799条经验 获得超6个赞

在存储库界面中使用它

@Query("select e from Entity where e.dateOfPurchase like %:dateOfPurchase%")
List<Entity> findByDateOfPurchase(@Param("dateOfPurchase ")String dateOfPurchase );


查看完整回答
反对 回复 2021-05-26
  • 2 回答
  • 0 关注
  • 142 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信