Как сохранить сущности в бд используя разные транкзации

294
10 мая 2017, 07:19

Есть следующий метод:

@RequestMapping(value = "/newCard", method = RequestMethod.POST)
public String saveCard(@Valid @ModelAttribute("cardForm") Cards card, @RequestParam("balance") String balance,
                       BindingResult result, ModelMap model) {
    card.setTypeCard(typeCardService.getTypeCardbyStatus("active"));
    cardService.saveCard(card);
    CardBalance cardBalance = new CardBalance();
    cardBalance.setBalance(BigDecimal.valueOf(Double.valueOf(balance)));
    cardBalance.setCardId(card.getCardId());
    cardBalanceService.save(cardBalance);
    return "success";
}

Здесь я сохраняю Card в бд, а затем пытаюсь сохранить баланс для этой карты. Проблема в том, что когда я пытаюсь сохранить баланс карты, я получаю ошибку - "родительская таблица не существует" (кард-баланс ссылается на кард). Полагаю, что все это происходит из-за того, что всё выполняется в одной транзакции. Подскажите как эту проблему можно разрешить?

Лог:

    type Exception report
message Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [NICK.FK_CARD_ID_HIST]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [NICK.FK_CARD_ID_HIST]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
...
root cause
org.springframework.dao.DataIntegrityViolationException: could not execute statement; SQL [n/a]; constraint [NICK.FK_CARD_ID_HIST]; nested exception is org.hibernate.exception.ConstraintViolationException: could not execute statement
    org.springframework.orm.hibernate5.SessionFactoryUtils.convertHibernateAccessException(SessionFactoryUtils.java:241)
...
root cause
org.hibernate.exception.ConstraintViolationException: could not execute statement
...
root cause
java.sql.SQLIntegrityConstraintViolationException: ORA-02291: integrity constraint (NICK.FK_CARD_ID_HIST) violated - parent key not found
ORA-06512: at "NICK.ONEINTOHIST", line 2
ORA-04088: error during execution of trigger 'NICK.ONEINTOHIST'
READ ALSO
Ошибка при запуске потока

Ошибка при запуске потока

Есть следующий код:

297
Как сделать one to one undirectional mapping hibernate

Как сделать one to one undirectional mapping hibernate

Я имею следующую схему БД:

235
JNI - Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

JNI - Failed to write core dump. Minidumps are not enabled by default on client versions of Windows

Пишу приложение на Java, использующее dll-библиотеку методов, реализованных на С++ (технология JNI)Оказалось, что для разной разрядности установленной...

268