0

ここにある NetBeans サイトの affableBean チュートリアルに従っています。注文書 (checkout.jsp) を送信できないという問題が発生しました。フォーム データを送信すると、http 500 ステータスと次のエラーが表示されます。

警告: EJB5184: EJB OrderManager、メソッドの呼び出し中にシステム例外が発生しました: public int session.OrderManager.placeOrder(java.lang.String,java.lang.String,java.lang.String,java.lang.String,java .lang.String,java.lang.String,cart.ShoppingCart) 警告: EJB5184: EJB OrderManager、メソッド: public int session.OrderManager.placeOrder(java.lang.String,java.lang. String,java.lang.String,java.lang.String,java.lang.String,java.lang.String,cart.ShoppingCart) 警告: javax.ejb.EJBException at com.sun.ejb.containers.BaseContainer.processSystemException( BaseContainer.java:5215) com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5113) com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4901) com.sun.ejb .コンテナ。BaseContainer.postInvoke(BaseContainer.java:2045) com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1994) com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222) com .sun.ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:89) セッションで com.sun.proxy.$Proxy163.placeOrder(不明なソース) で。placeOrder(不明なソース) セッションで。placeOrder(不明なソース) セッションで。EJB31_Generated_ OrderManager _Intf_ Beanjavax.servlet.http.HttpServlet.service(HttpServlet.service(HttpServlet. java:770) org.apache.catalina.core.StandardWrapper.service(StandardWrapper.java:1550) org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:281) org.apache.catalina.core .StandardContextValve.invoke(StandardContextValve.java:175) で org.apache.catalina.core.StandardPipeline.doInvoke(StandardPipeline.java:655) で org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) でorg.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:161) org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) com.sun.enterprise.v3.services.impl.ContainerMapper$AdapterCallable.call(ContainerMapper.java:317) com.sun .enterprise.v3.services.impl.ContainerMapper.service(ContainerMapper.java:195) com.sun.grizzly.http.ProcessorTask.invokeAdapter(ProcessorTask.java:860) com.sun.grizzly.http.ProcessorTask.doProcess (ProcessorTask.java:757) com.sun.grizzly.http.ProcessorTask.process(ProcessorTask.java:1056) com.sun.grizzly.http.DefaultProtocolFilter.execute(DefaultProtocolFilter.java:229) com.sun. grizzly.DefaultProtocolChain.executeProtocolFilter(DefaultProtocolChain.java:137) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) で実行 (DefaultProtocolChain.java:90) com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) で com.sun.grizzly .SelectionKeyContextTask.call(SelectionKeyContextTask.java:59) で com.sun.grizzly.ContextTask.run(ContextTask.java:71) で com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) でcom.sun.grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:724)call(SelectionKeyContextTask.java:59) で com.sun.grizzly.ContextTask.run(ContextTask.java:71) で com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) で com.sun .grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:724)call(SelectionKeyContextTask.java:59) で com.sun.grizzly.ContextTask.run(ContextTask.java:71) で com.sun.grizzly.util.AbstractThreadPool$Worker.doWork(AbstractThreadPool.java:532) で com.sun .grizzly.util.AbstractThreadPool$Worker.run(AbstractThreadPool.java:513) at java.lang.Thread.run(Thread.java:724)

原因: javax.validation.ConstraintViolationException: コールバック イベント 'prePersist' で自動 Bean Validation を実行中に Bean Validation 制約に違反しました。詳細については、埋め込まれた ConstraintViolations を参照してください。org.eclipse.persistence.internal.jpa.metadata.listeners.BeanValidationListener.validateOnCallbackEvent(BeanValidationListener.java:90) で org.eclipse.persistence.internal.jpa.metadata.listeners.BeanValidationListener.prePersist(BeanValidationListener.java:62) でorg.eclipse.persistence.descriptors.DescriptorEventManager.notifyListener(DescriptorEventManager.java:698) で org.eclipse.persistence.descriptors.DescriptorEventManager.notifyEJB30Listeners(DescriptorEventManager.java:641) で org.eclipse.persistence.descriptors.DescriptorEventManager.

ControllerServlet の 201 行目は次のとおりです。 int orderId= orderManager.placeOrder(name,email,phone,address,cityRegion,ccNumber,cart);

OrderManager の 88 行目と 56 行目は、em.persist(customer); です。em.persist(オーダー);

デバッグセッションの実行中、どちらの場合も永続化メソッドにnull値があるようです.私の結論は、データベースによって分類されたIDがないため、永続化メソッドにはnull値があるということです. データベーステーブルにデータを保持するために今何をしているのかわかりません。返信ありがとう。

4

1 に答える 1