問題タブ [hibernateexception]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
sql - どのエンティティが SQL 例外を引き起こしたかを知る方法
春の休止状態を使用して、安らかなサービスアプリを作成しています。操作が失敗したときにエラー メッセージを返したい。たとえば、重複した主キーが検出された場合にアカウントを作成しているときに、ユーザー名が利用できないというメッセージを設定したいと考えています。
したがって、stacktace を使用すると、内部例外が
しかし、取得しようとするとcve.getConstraintName()
、null が返されます。(cve.getConstraintName()
は 1062)
私が探しているものを手に入れる方法はありますか?
参考までに、これは完全なスタック トレースです。
hibernate - HibernateException を引き起こす複数のデータソース?
私の grails プロジェクトでは、ほとんどのクラス用にメモリ内 h2 データベースを使用していますが、ユーザー関連のすべてのクラス用に永続データベースを追加しただけです。起動時に、アプリはいくつかのスレッドを実行します。2 番目のデータソースを追加した後、HibernateExceptions が発生します。具体的には、
それらは最初の 1 つまたは 2 つのスレッドでのみ発生し、残りは問題なく実行されます。これは、データベースが最初に起動する際のある種の並行性の問題であると私に信じさせます。エラーが発生するコードは次のとおりです。
これがデータベースの問題なのか、休止状態の問題なのか、それとも何か他の問題なのか、私にはわかりません。Grails 2.0.4 の実行
完全なスタック トレース:
私のデータソース:
hibernate - スレッドで Hibernate StaleObject 例外が継続的に発生する
私たちの実稼働環境の 1 つで、スレッドが最初に表示された後、連続してスレッドで hibernatestaleobject 例外が発生します。これは、サーバーを再起動するまで続きます。
環境: Oracle 10g、WAS 6.1、Hibernate 2.1
スタックトレースは以下です。
これを他の環境でシミュレートすることはできません。
コードスニペット:
java - Postgres はトランザクションを中止し、トランザクションが終了するまでクエリを無視します。ロールバックする前にトランザクションを処理することは可能ですか?
Java/Postgres アプリケーションでのエラー処理を改善しようとしていますが、固定長の列に対して入力が長すぎるというエラーが頻繁に発生します。これが発生したときにトランザクションをロールバックしますが、ロールバックが完了する前に、どの列が長さの制約に違反しているかを特定して、このエラーのデバッグをより簡単かつ効率的にする方法を見つけようとしています。
私のアプローチは次のとおりです。
informationschema.columns
エラー メッセージに表示された長さのすべての列名を取得するクエリ- 手順 1 で返された各列をクエリして、長さの制約を確認します
ただし、情報スキーマを照会しようとすると、次のエラーが発生します。
このトランザクションで Java から引き続きクエリを実行する方法はありますか、または長さの制約に違反している列を取得するためのより良い方法はありますか?
java - EntityNotFoundException: 削除されたエンティティが永続化に渡されました
テーブルの 1 行を削除しようとしています。
マイページ:
私は方法を行いますpatientCardMB.delete()
:
PatientCardDAo.delete:
エンティティの患者カード:
削除しようとすると、次のエラーが発生します。
警告: DTX5014: beforeCompletion() コールバックで例外をキャッチしました: javax.persistence.EntityNotFoundException: 削除されたエンティティが永続化に渡されました: [pl.ePrzychodnia.model.PatientCard#] at org.hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:621) ) org.hibernate.ejb.AbstractEntityManagerImpl$1.beforeCompletion(AbstractEntityManagerImpl.java:532) で com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:435) で com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit (JavaEETransactionManagerSimplified.java:855) com.sun.ejb.containers.BaseContainer.completeNewTx(BaseContainer.java:5136) com.sun.ejb.containers.BaseContainer.postInvokeTx(BaseContainer.java:4901) com.sun. ejb.containers.BaseContainer.com.sun.ejb.containers.BaseContainer.postInvoke(BaseContainer.java:1994) の postInvoke(BaseContainer.java:2045) com.sun.ejb.containers.EJBLocalObjectInvocationHandler.invoke(EJBLocalObjectInvocationHandler.java:222) の com.sun .ejb.containers.EJBLocalObjectInvocationHandlerDelegate.invoke(EJBLocalObjectInvocationHandlerDelegate.java:89) at com.sun.proxy.$Proxy203.delete(Unknown Source) at pl.ePrzychodnia.mb.PatientCardMB.delete(PatientCardMB.java:102) at sun. reflect.NativeMethodAccessorImpl.invoke0(ネイティブ メソッド) で sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) で sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) で java.lang.reflect.Method.invoke( Method.java:601) で javax.el.BeanELResolver.invokeMethod(BeanELResolver.java:779) で javax.el.BeanELResolver.invoke(BeanELResolver.java:528) で javax.el.CompositeELResolver.invoke(CompositeELResolver.java:257) で com.sun.el.parser.AstValue.invoke(AstValue.java:248) ) com.sun.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:302) で com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) で javax.faces.component.MethodBindingMethodExpressionAdapter.invoke( MethodBindingMethodExpressionAdapter.java:88) の com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) の javax.faces.component.UICommand.broadcast(UICommand.java:315) の javax.faces.component.UIData .broadcast(UIData.java:1093) at javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:794) javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1259) com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) com.sun .faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:118) at javax.faces.webapp.FacesServlet.service(FacesServlet.java:593) at 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. org.apache.catalina.core.StandardPipeline.invoke(StandardPipeline.java:595) の doInvoke(StandardPipeline.java:655) org.apache.catalina.core.StandardHostValve.org.apache.catalina.connector.CoyoteAdapter.doService(CoyoteAdapter.java:331) の invoke(StandardHostValve.java:161) com.sun の org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:231) で.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) で com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:104) at com.sun.grizzly.DefaultProtocolChain.execute(DefaultProtocolChain.java:90) at com.sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at 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) で java.lang.Thread.run( Thread.java:722)sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at 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:722)sun.grizzly.http.HttpProtocolChain.execute(HttpProtocolChain.java:79) at com.sun.grizzly.ProtocolChainContextTask.doCall(ProtocolChainContextTask.java:54) at 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:722)java.lang.Thread.run(Thread.java: 722)java.lang.Thread.run(Thread.java: 722)
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:722) 原因: javax.transaction.RollbackException: ロールバックのマークが付けられたトランザクション。com.sun.enterprise.transaction.JavaEETransactionImpl.commit(JavaEETransactionImpl.java:473) com.sun.enterprise.transaction.JavaEETransactionManagerSimplified.commit(JavaEETransactionManagerSimplified.java:855) com.sun.ejb.containers.BaseContainer.completeNewTx (BaseContainer.java:5136) ... 51 以上 原因: javax.persistence.EntityNotFoundException: 削除されたエンティティが永続化に渡されました: [pl.ePrzychodnia.model.PatientCard#] at org.hibernate.ejb.
なぜこのエラーが発生するのかわかりません。以前に同様のエンティティを削除しましたが、すべて機能しました。
hibernate - Hibernate - 「整合性制約違反: 一意制約またはインデックス違反」をキャッチする方法
私のテーブルには、一意の制約があります。休止状態では、その制約に違反するアイテムを追加すると、それをキャッチしたいので、アイテムを作成する代わりに更新します。
try-catch ブロックを設定しない場合
次のエラーが発生します
次のtry-catchブロックを設定すると
次のエラーが発生します
「ConstraintViolationException」をキャッチすると、制約例外が発生し続け、何もキャッチされません。
どうすればこれをキャッチできますか?