Запись связных сущностей Hibernate

296
12 ноября 2018, 01:30

пишу Rest Web-сервис, Spring Boot+Hibernate+Postgres, есть три сущности: класс А, В и А_В, ссылающийся на оба через ManyToOne, связь onedirectional. Надо записать А_В при этом автоматически создав А или В в одной транзакции. Это возможно вообще?

@Embeddable
class IdA {
String code; // code одинаков и для класса А, для В и для A_B
String nameA;
}
class A {
@EmbeddedId
IdA id;
}
@Embeddable
class IdB {
String code;
String nameB;
}
class B {
@EmbeddedId
IdB id;
}
@Embeddable
class IdA_B {
String code;
String nameA;
String name B;
LocalDate start;
}
class A_B {
@EmbeddedId
IdA_B id;
LocalDate end;
@ManyToOne
@JoinColumns({
@JoinColumn(name="code", referencedColumnName="code", insertable = false, updatable = false),
@JoinColumn(name="nameA", referencedColumnName="nameA", insertable = false, updatable = false)
})
A a;
@ManyToOne
@JoinColumns({
@JoinColumn(name="code", referencedColumnName="code", insertable = false, updatable = false),
@JoinColumn(name="nameB", referencedColumnName="nameB", insertable = false, updatable = false)
})
B b;
}

И хочу записать инстанс класса А_В при условии что пока ни А ни В на которые он ссылается нет в БД. Ну и сам метод

A a = new A(new IdA("code"," nameA"))
B b = new B(new IdB("code"," nameB"))
A_B ab = new A_B(new IdA_B("code", "nameA", "nameB", LocalDate.now()), LocalDate.now().plusDays(1), a, b);
abRepository.save(ab);
Answer 1

cascade(CascadeType.All) - решило проблему.

READ ALSO
Как по нажатию элемента recycler view открыть fragment?

Как по нажатию элемента recycler view открыть fragment?

У меня в activity есть фрагмент с recycler view (вертикальный список)Как сделать так, чтобы по нажатию любого элемента в этом списке открывался другой...

197
regex по букве и цифре

regex по букве и цифре

Есть разные строки но надо определить именно L1H3708 и L1H2708Необходимо определять c помощью rejex есть ли L на первом месте и 3 или 2 на пятом

152
Не могу прочитать List<объект>

Не могу прочитать List<объект>

Имеется JSON запрос который я получаю со стороны сервера

279
Java - new NewThread()

Java - new NewThread()

В одной из книг даются примеры и мне не совсем понятно использование кодового слова "new"

335