Spring Transaction с зависимыми вставками не работает - PullRequest
0 голосов
/ 12 марта 2019

Вот мой код:

Объекты:

@Entity
public class A {
    @Id
    Long aId;
    ...
}

@Entity
public class B {
    @Id
    Long bId;
    Long aId;
    ...
}

Услуги:

@Transactional
public void multiInsert() {
    A a = createA();
    aRepository.save(a);

    B b = createBFromA();
    bRepository.save(b);
}

Когда я пытаюсь сделать bRepository.save(), происходит сбой со следующей ошибкой:

Причина: java.sql.SQLException: Невозможно добавить или обновить дочернюю строку: ограничение внешнего ключа не выполнено (b, CONSTRAINT a_to_b FOREIGN KEY (aId) ССЫЛКИ a (aId) )

Я предполагаю, что a не сохраняется до того, как мы пытаемся сохранить b, из-за которого ограничение внешнего ключа не выполняется.

Я знаю, что для внешнего ключа я должен использовать @JoinColumns. Но есть ли способ заставить его работать без этого.

...