169 похожих чатов

Ребят в чем может быть проблема? detached entity passed to persist связь

мениТуМени

энтити Юзер

@ManyToMany(cascade = {
CascadeType.PERSIST,
CascadeType.MERGE
})
@JoinTable(name = "user_address",
joinColumns = @JoinColumn(name = "id_user"),
inverseJoinColumns = @JoinColumn(name = "id_address"))
@ToString.Exclude
Set<Address> addresses = new HashSet<>();


public void addAddress(Address address) {
addresses.add(address);
address.getUsers().add(this);
}

энтити Адрес

@Convert(converter = StringConverter.class)
@ManyToMany(mappedBy = "addresses")
private Set<User> users = new HashSet<>();

6 ответов

32 просмотра

каскад это не умный механизм укладывания дерева объектов в базу, он просто вызывает для потомка то же события что и для родителя ты перзистишь transient-родителя с detached-потомком и persist для потомка падает гуглится как события jpa и жизненный цикл сущности

Muzaffar-Rasulov Автор вопроса

проблема тут? addressRepository.saveAll(tAddresses); tAddresses.forEach(t -> { user.addAddress(t); log.info("Temporary Address data for new user by pin {}, is saved and data is: {}", user.getPin(), t); });

скорее проблема в каскаде, на saveAll spring-data проверяет тип объекта, и в твоём случае вызывает для него persist и из-за каскада это действие автоматом применяется и к потомку а тебе этого не надо, убирай каскад и делай сохранение руками

это все в одной транзакции?

Muzaffar-Rasulov Автор вопроса

да, но именно у адреса стоит асинк

Где? Пока полностью код

Похожие вопросы

Обсуждают сегодня

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта