【问题标题】:JpaSystemException when trying to fetch null values from Database尝试从数据库中获取空值时出现 JpaSystemException
【发布时间】:2020-06-01 08:29:34
【问题描述】:

在某些情况下,数据库中的主 ID 为空,当我获取它时,它给了我 JPA 系统异常 那么是否有任何注释可以帮助忽略空值。 方法抛出 'org.springframework.orm.jpa.JpaSystemException' 异常。 尝试从数据库中获取详细信息时得到它。

package com.merchant.orderDahsBoard.controller;

@RestController
@RequestMapping(value = "Dashboard")
public class OrderDashboardController {

@Autowired
private DashBoardService service;

ObjectMapper mapper = new ObjectMapper();
private static final Logger log = LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());

@PostMapping(value = "/getOrderDetails")
public OrderResponse getOrder(@PathParam(value = "id") Long id) {
    OrderResponse response = new OrderResponse();
    List<OrderMapping> orderMapping;
    Sale sale= new Sale();

    Purchase purchase = new Purchase();
    long saleId = 0;
    long purchaseId = 0;
    try{
        orderMapping = service.getOrderMapping(id);
        response.setOrderMapping(orderMapping);
        if (orderMapping != null) {
            for (OrderMapping order : orderMapping) {
                switch (order.getORDERTYPE()) {
                    case CART:
                        break;
                    case SALE:
                        saleId = order.getORDERID();
                        break;
                    case PURCHASE:
                        purchaseId = order.getORDERID();
                        break;

                }
            }

            if(saleId!=0){
                sale = service.getSale(saleId);
                response.setSale(sale);
            }

        }
    }
    catch(Exception e){
        log.error("Exception occured "+e);
    }
    return response;
}

}

下面是我项目中使用的@Entity类

@Entity
@Table(name = "ORDERMAPPING")
@Getter
@Setter
@ToString
public class OrderMapping {
@Id
@Column(name = "ORDERMAPPINGID")
private long ORDERMAPPINGID;

@Column(name = "MASTERID")
private long MASTERID;

@Column(name = "ORDERID")
private long ORDERID;

@Enumerated(EnumType.ORDINAL)
private OrderTypeEnum ORDERTYPE;

@Column(name = "ADDEDDATE")
private String ADDEDDATE;

@Column(name = "LASTUPDATEDDATE")
private String LASTUPDATEDDATE;

@Column(name = "CARTID")
private long CARTID;

@Column(name = "PCARTID")
private long PCARTID;

}

【问题讨论】:

    标签: spring hibernate spring-boot


    【解决方案1】:

    尝试使用包装类来代替原始数据类型。下面的代码可以更好地帮助你。

    使用长而不是长

    @Entity
    @Table(name = "ORDERMAPPING")
    @Getter
    @Setter
    @ToString
    public class OrderMapping {
    @Id
    @Column(name = "ORDERMAPPINGID")
    private Long ORDERMAPPINGID;
    
    @Column(name = "MASTERID")
    private Long MASTERID;
    
    @Column(name = "ORDERID")
    private Long ORDERID;
    
    @Enumerated(EnumType.ORDINAL)
    private OrderTypeEnum ORDERTYPE;
    
    @Column(name = "ADDEDDATE")
    private String ADDEDDATE;
    
    @Column(name = "LASTUPDATEDDATE")
    private String LASTUPDATEDDATE;
    
    @Column(name = "CARTID")
    private Long CARTID;
    
    @Column(name = "PCARTID")
    private Long PCARTID;
    
    }
    

    【讨论】:

    • 为我工作。我把实体类中的long换成了long。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-01
    • 2019-09-03
    • 2021-02-27
    • 2016-03-06
    • 1970-01-01
    • 1970-01-01
    • 2018-09-13
    相关资源
    最近更新 更多