Hibernate: Как каскадировать несопоставленный объект? - PullRequest
1 голос
/ 02 апреля 2019

Можно ли установить каскад, не сопоставляя одно или несколько отношений?

У меня есть две сущности:

@Entity
@Table(name = "USER")
public class User {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;

    ...
}

и

@Entity
@Table(name = "RECORD")
public class Record  {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "ID")
    private Long id;

    @ManyToOne
    @JoinColumn(name = "USER")
    private User user;

    ...
}

Если я пытаюсь удалить пользователя и существует какая-либо запись об этом пользователе, это явно дает сбой из-за внешнего ключа. Я хотел бы удалить все записи пользователя перед удалением пользователя. Я вижу два варианта:

  1. Карта Record s как @OneToMany отношение в User и набор cascade.

    @OneToMany(mappedBy = "user", cascade = CascadeType.REMOVE)
    private Set<Record> records;
    
  2. Удалить их вручную перед удалением пользователя

Есть ли третий вариант, как установить каскад без отображения записей в пользовательской сущности?

1 Ответ

0 голосов
/ 02 апреля 2019

Каскад работает плохо в JPA, лучше обращаться с ним вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...