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 ответов

14 просмотров

каскад это не умный механизм укладывания дерева объектов в базу, он просто вызывает для потомка то же события что и для родителя ты перзистишь 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 Автор вопроса

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

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

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

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

Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
Открыл свой двухкилобайтный экзешник в x32dbg, а тут какая-то хрень. Смущает кнопка "выполнить до пользовательского кода", а что ещё может быть в файле помимо него ?
НѣкъиⰘижєжєиꙁъвьсєсвѣтьноѣсѣтиѥсть•
11
Мне были интересны дишные хаки и я нашёл любопытный способ на форуме через __traits, что-то вроде int delegate(int) fac = (int n) => n == 0 ? 1 : n * __traits(parent, {})(n - ...
Constantin F.
1
Вопрос тем кто смотрит видео и слушает подкасты - как вы потом ищете нужную вам информацию? Вот статью я прочитал, потом могу искать нужную мне часть банальным поиском. Пропус...
Aleksandr Druzhinin
4
Всем привет, подскажите/посоветуйте пожалуйста. Фаердак компоненты, имею одно место где бизнес хочет видеть при открытии формы список всех клиентов, это порядка 30к. Мои дово...
Sasha Sch
14
Ребят, если кто в курсе - скажите, а в загранке такое же засилье маркетплейсов? или там простые сермяжные интернет-магазины живут попроще?
Андрей [aharito] Харитонов
14
Коллеги, доброе утро. Запустил на удаленном хосте приложение (ручками зашел туда по ssh и запустил, не командой удаленно). Создал потом ssh-туннель, и с моей машины приложение...
Δημήτηρ
9
Карта сайта