【问题标题】:How to check not null date in spring jpa如何在春季 jpa 中检查非空日期
【发布时间】:2020-04-09 13:19:42
【问题描述】:

我有 2 个 IF。如果没有 1,对我有用。因为如果数据存在并且得到家务== null,我不会。用于更新条件、状态和内务管理的操作。

If(getData.isPresent() && bulkUpdate.getHouseKeeping() == null)

如果没有 2,对我来说没有工作。如果 getData 存在并且得到家政服务可用/不为空,我不会。仅用于更新条件的操作

else if(getData.isPresent() && bulkUpdate.getHouseKeeping() != null)

只检查'null',而不检查'not null'。我不会检查 null 而不是 null 对我有用

注意:getData.isPresent = 整数,getHouseKeeping = 日期

完整代码:

Date now = new Date();
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
    Date today = sdf.parse(sdf.format(now)); 

    RoomBoy updatedData = request.getPayload();

    Optional<RoomBoy> getData = roomBoyRepository.findByIdAndHouseKeeping(updatedData.getId(), updatedData.getHouseKeeping());
    if(getData.isPresent() && updatedData.getHouseKeeping() == null ) {
        RoomBoy oldData = getData.get();

        oldData.setCondition(updatedData.getCondition());
        oldData.setStatus("Done");
        oldData.setHouseKeeping(today);

        roomBoyRepository.saveAndFlush(oldData);
        status.setStatusCode("000");
        status.setStatusDesc("Success");
    }else if(getData.isPresent() && updatedData.getHouseKeeping() != null){
        RoomBoy oldData = getData.get();
        oldData.setCondition(updatedData.getCondition());

        roomBoyRepository.saveAndFlush(oldData);
        status.setStatusCode("000");
        status.setStatusDesc("Success");
    }else{
        status.setStatusCode("001");
        status.setStatusDesc("Data Not Found");
    }

【问题讨论】:

  • if( getData.isPresent()){ if( bulkUpdate.getHouseKeeping() == null) { ... }else{ ... } 这是你要找的吗?
  • 你可以添加答案
  • 当然。那是你要找的吗?否则,您可以用简单的术语写出您期望的条件。另外 isPresent() 的 yes 条件是什么,它是否大于 0 ?
  • 如果你想同时检查两个条件,去掉'else'
  • 请再次查看我的提问帖,我添加完整代码

标签: java mysql sql spring spring-data-jpa


【解决方案1】:

我在比较 null 时遇到了一些类似的问题。尝试执行以下操作:

if(getData.isPresent()){
     if(updatedData.getHouseKeeping() == null ) {
        RoomBoy oldData = getData.get();

        oldData.setCondition(updatedData.getCondition());
        oldData.setStatus("Done");
        oldData.setHouseKeeping(today);

        roomBoyRepository.saveAndFlush(oldData);
        status.setStatusCode("000");
        status.setStatusDesc("Success");
    }else{
        RoomBoy oldData = getData.get();
        oldData.setCondition(updatedData.getCondition());

        roomBoyRepository.saveAndFlush(oldData);
        status.setStatusCode("000");
        status.setStatusDesc("Success");
    }
}
else{
        status.setStatusCode("001");
        status.setStatusDesc("Data Not Found");
}

这里我们将if-elseif的排列方式改为嵌套if-else。希望对你有帮助。

【讨论】:

    【解决方案2】:

    假设updatedData.isPresent() 在 > 0 时为真

        if(getData.isPresent() > 0){ // When data is present
           RoomBoy oldData = getData.get(); // get room boy data
           if(updatedData.getHouseKeeping() == null){ // if housekeeping is null
              oldData.setStatus("Done");
              oldData.setHouseKeeping(today); // set house keeping 
            } 
           oldData.setCondition(updatedData.getCondition());
    
           roomBoyRepository.saveAndFlush(oldData);
           status.setStatusCode("000");
           status.setStatusDesc("Success");
        } else{
            status.setStatusCode("001");
            status.setStatusDesc("Data Not Found");
        }
    

    【讨论】:

      猜你喜欢
      • 2021-06-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-02
      • 2012-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多