У меня есть следующая настройка.Домен проверяет, но не сохраняет
Класс, скажем, Автомобиль, имеющий CarPart (принадлежитTo = [автомобиль: Автомобиль]).
Когда я создаю автомобиль, я также хочу, чтобы создать сома по умолчанию CarParts, так что я
def car = new Car(bla bla bla)
def part = new CarPart(car:car)
Теперь, когда я car.validate() или part.validate(), кажется, хорошо. Но когда я делаю, если (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
Так положить его в обслуживание и транзакция будут обработаны. В этом случае мой второй пример будет лучше. Если 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