powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление всех Child у parent
4 сообщений из 4, страница 1 из 1
Удаление всех Child у parent
    #37839457
denis11111
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть два класа:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
@Entity
@Table(name = "operations")
public class Operations implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "id")
    private Integer id;
    @Column(name = "name")
    private String name;
    @Column(name = "description")
    private String description;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "operation")
    private List<Operjrnl> operjrnlList;
.........
}

@Entity
@Table(name = "users")
public class Users implements Serializable {
    @Id
    @Column(name = "LOGIN")
    private String login;
    @Column(name = "PASSHASH")
    private String passhash;
    @JoinColumn(name = "STAFF", referencedColumnName = "PERSON_ID")
    @ManyToOne(optional = false)
    private Staff staff;
    @JoinColumn(name = "ROLE_ID", referencedColumnName = "ROLE_ID")
    @ManyToOne(optional = false)
    private Roles roleId;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "user")
    private List<Operjrnl> operjrnlList;
..................
}



Почему когда я пишу следующий код:

Код: java
1.
2.
selectedUser.getOperjrnlList().clear(); //Чистим список операций по пользователю
um.edit(selectedUser);


Записи из БД не удаляются?

Хотя если додавать елемент в список, то от нормально добавляется в БД:
Код: java
1.
2.
selectedUser.getOperjrnlList().add(operation);
um.edit(selectedUser);
...
Рейтинг: 0 / 0
Удаление всех Child у parent
    #37839482
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что такое um.edit() ?
Какого класса объект реализует спискок?
Какой JPA провайдер?

Если используется Hibernate, то при загрузке, вы получите Persistent коллекцию, которую реализует Хибер. Такая коллекция хранит в себе изначальное состояние, с которым может сравнить новое состояние, и удалить лишнее.

Если коллекция заменяется, на ArrayList, например. То хибер никак не узнает что что-то из него удаляли. Такая проверка требует слишком много дополнительных SQL запросов, если её реализовать.
...
Рейтинг: 0 / 0
Удаление всех Child у parent
    #37839483
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме этого. Удаление из коллекции не обозначает автоматического удаления объекта. Оно обозначает разрыв ассоциации.
...
Рейтинг: 0 / 0
Удаление всех Child у parent
    #37839490
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если нужно чтобы при разрыве ассоциации удалялись и сами дочерние объекты, посмотри
CascadeType.DELETE_ORPHAN и orphanRemoval = true
http://stackoverflow.com/questions/306144/jpa-cascadetype-all-does-not-delete-orphans

т.е. если при разрыве ассоциации, дочерний объект больше не нужен, то он будет ещё и удалён.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / Удаление всех Child у parent
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]