1
次の設定があります。ドメインは検証しますが保存しません
クラス、たとえば、CarPart(belongsTo = [car:Car])を持つクラス。
私はまた、SOMのデフォルトCarPartsを作成したい車を作成していますので、私は、私はcar.validate()またはpart.validateを行うとき()、それは罰金だ、今
def car = new Car(bla bla bla)
def part = new CarPart(car:car)
を行います。 しかしとき(car.save & & part.save()私はこの例外を取得する場合、私は実行します。
2012-03-24 14:02:21,943 [http-8080-4] ERROR util.JDBCExceptionReporter - Batch entry 0 insert into car_part (version, car_id, id) values ('0', '297', '298') was aborted. Call getNextException to see the cause.
2012-03-24 14:02:21,943 [http-8080-4] ERROR util.JDBCExceptionReporter - ERROR: value too long for type character varying(6)
2012-03-24 14:02:21,943 [http-8080-4] ERROR events.PatchedDefaultFlushEventListener - Could not synchronize database state with session
org.hibernate.exception.DataException: Could not execute JDBC batch update
Stacktrace follows:
java.sql.BatchUpdateException: Batch entry 0 insert into car_part (version, deal_id, id) values ('0', '297', '298') was aborted. Call getNextException to see the cause.
at org.postgresql.jdbc2.AbstractJdbc2Statement$BatchResultHandler.handleError(AbstractJdbc2Statement.java:2621)
at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1837)
at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:407)
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeBatch(AbstractJdbc2Statement.java:2754)
at $Proxy20.flush(Unknown Source)
at ristretto.DealController$_closure5.doCall(DealController.groovy:109)
at ristretto.DealController$_closure5.doCall(DealController.groovy)
at java.lang.Thread.run(Thread.java:722)
任意のアイデア
良い答えが、私は実際にいくつかの理由でCarPartは保存しません。どちらの車が... – marko
だからでそれを置く必要がある場合、トランザクションのいくつかの種類でこれをやりたいですサービスが処理され、トランザクションが処理されます。その場合、私の2番目の例はより良いものになるでしょう。 CarPartが失敗すると、エラーはCarまで保持され、トランザクションはロールバックされます。 – Gregg
CarPart p = new CarPart(bla bla bla).save()、それは私に提供されます:java.sql.BatchUpdateException:バッチエントリ0の挿入car_part(version、created、car_id、status、id)の値( '0'、 '2012-03-26 23:11:01.512000 +02:00:00'、 '303'、 'SHAFT'、 '368')中止されました。原因を調べるにはgetNextExceptionを呼び出します。 \t at org.postgresql.jdbc2.AbstractJdbc2Statement $ BatchResultHandler.handleError(AbstractJdbc2Statement.java:2621) – marko