Привет, я использую JPA2 с реализацией Hibernate, и у меня есть простое сопоставление:
@Entity
@Table(name = "users")
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
@OneToMany(mappedBy = "user", cascade = ALL)
private List<SubscribedUser> subscribedUsers;
}
и вторая таблица (SubscribedUser) с идентификатором класса:
@Entity
@Table(name = "subscribed_users")
@IdClass(SubscribedUserId.class)
public class SubscribedUser {
@Id
@ManyToOne
@JoinColumn(name = "id_user", referencedColumnName = "id")
private User user;
@Id
@ManyToOne
@JoinColumn(name = "id_subscribed_user", referencedColumnName = "id")
private User subscribedUser;
}
Предположим, у нас есть 2 записи в таблице subscribed_users: 1.
user | subscribed_user
1 | 2
2.
user | subscribed_user
2 | 1
Проблема в том, что когда я удаляю пользователя с id = 1. первая запись удаляется правильно с опцией каскада, но я получил ошибку, потому что во второй записи в таблице subscribed_users есть еще ссылка на пользователя с id = 1 . Есть ли возможность каскадного удаления и второй записи?
Спасибо
Давид