JpaSystemException при попытке получить нулевые значения из базы данных - PullRequest
0 голосов
/ 17 февраля 2020

в некоторых случаях главный идентификатор равен нулю в БД, и когда я его получаю, он выдает системное исключение 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;

}

1 Ответ

1 голос
/ 17 февраля 2020

Вместо примитивных типов данных попробуйте использовать классы-оболочки для одного и того же. Следующий код может помочь вам лучше.

Использовать Long вместо длинных

@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;

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...