私は追加の列を持つMany Manyを持っています。ここで実現(ロンボク島で発生したゲッター/セッター、明確にするため取り除か):Hibernate ManyToMany wtih column子の削除
public class User extends BaseEntity {
@OneToMany(mappedBy = "user",
orphanRemoval = true,
fetch = FetchType.LAZY
cascade = CascadeType.ALL,)
private List<UserEvent> attendeeEvents = new ArrayList<>();
}
@Table(
name = "UC_USER_EVENT",
uniqueConstraints = {@UniqueConstraint(columnNames = {"user_id", "event_id"})}
)
public class UserEvent extends BaseEntity {
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "event_id")
private Event event;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_id")
private User user;
@ManyToOne(cascade = CascadeType.ALL)
@JoinColumn(name = "user_response_id")
private UserResponse userResponse;
}
public class Event extends BaseEntity {
@OneToMany(mappedBy = "event",
orphanRemoval = true,
fetch = FetchType.EAGER,
cascade = CascadeType.ALL)
private List<UserEvent> userEvents = new ArrayList<>();
}
私はこれをしたい - 私は、イベントを削除すると、それに接続されているすべての「UserEventsは、」削除する必要があります。ユーザーを削除すると、すべての "UserEvents"も削除する必要があります。
eventRepository.delete(event);
次に取得デシベルからUserEvents:
List<UserEvent> userEvents = userEventsId.stream()
.map(id -> entityManager.find(UserEvent.class, id)).collect(Collectors.toList());
そして、2つの項目のコレクションがある(これはUserEventsのカウントである)私は、イベントを削除
は(eventRepositoryは春JPAインターフェースです)しかし、それらはすべて "ヌル"です。
私は何が起こっているか、それを正しく行う方法を理解できません。 私はそれらを削除する必要があります。コレクションをチェックするときには、2ではなく0にする必要があります。
多対1マッピングが「CascadeType.ALL」とマークされているのはなぜですか? 'UserEvent'を削除すると' User'も削除されますか? – crizzis
あなたの質問に関しては、 'filter()'を呼び出さずに2つの要素のストリームで 'map()'を呼び出すと、まだ2つの要素があるストリームになります – crizzis
私はそれが休止状態の問題だと確信していました...ありがとう!私は既にUserEventのCascadeType.Allを削除しましたが、map()は全く認識しませんでした。 – Evgenii