Я следую руководству по affableBean с сайта NetBeans, расположенного здесь .
Код Репо здесь .
Я столкнулся с проблемой, когда не могу отправить заказ на покупку (checkout.jsp).
Когда я отправляю данные формы, я получаю статус http 500 и следующие ошибки:
WARNING: EJB5184:A system exception occurred during an invocation on EJB OrderManager, method: public java.util.Map session.OrderManager.getOrderDetails(int)
WARNING: javax.ejb.EJBException at controller.ControllerServlet.doPost(ControllerServlet.java:184)
Caused by: java.lang.NullPointerException at session.OrderManager.getOrderDetails(OrderManager.java:111)
Строка 184 ControllerServlet имеет вид: Map orderMap =
orderManager.getOrderDetails (OrderId);
Строка 111 OrderManager равна : Customer customer = order.getCustomer ();
При выполнении сеанса отладки кажется, что виновником является строка в OrderManger внутри метода getOrderDetails () . Насколько я могу судить, строка должна заполнять объект customer клиентом заказов.
Поиск источника. getCustomer () из класса Entity CustomerOrder:
private Customer customer;
...
public Customer getCustomer() {
return customer;
}
Кажется достаточно простым, он возвращает объект Customer. Что меня удивляет, так это то, почему я получаю исключение нулевого указателя, почему этот объект пуст?
Я полагаю, что это может быть связано с неправильностью моего класса сущностей, это, в свою очередь, будет означать, что моя база данных, которую я перенаправляю из диаграммы сущностей, будет неправильной, я на правильном пути?
Edit:
После удаления блока try catch из метода placeOrder () в классе ordermanager
из-за этого изменяя возвращаемое значение на 0.
У меня возникли дополнительные проблемы:
WARNING: EJB5184:A system exception occurred during an invocation on EJB OrderManager, method: public int session.OrderManager.placeOrder(java.lang.String,....,cart.ShoppingCart)
WARNING: javax.ejb.EJBException
javax.validation.ConstraintViolationException: Bean Validation constraint(s) violated while executing Automatic Bean Validation on callback event:'prePersist'.**
at session.OrderManager.addCustomer(OrderManager.java:58) (*em.persist()*)
at session.OrderManager.placeOrder(OrderManager.java:42) (*Customer customer = addCustomer()*)
В настоящее время я читаю, как перебрать ошибки и найти, какое ограничение я терплю неудачу.
Редактировать2:
Отладка метода addCustomer . Я вижу, что идентификатор клиента равен нулю, это нормально? я предполагаю, что это так, как поле базы данных идентификатора установлено в автоинкремент, но все же кажется странным иметь настраиваемое поле идентификатора в сущности вообще в этом случае.
Edit3:
Оказывается, автоматически сгенерированные теги [NotNull] в моих классах сущностей приводили к сбою проверки bean-компонента, удаляли теги, и все работает нормально.