@ManyToMany 관계가 동일한 엔티티로 생성되었습니다. @ManyToMany 목록에서 객체를 제거하는 올바른 방법
@Entity
@Table(name = "user")
public class User extends BaseEntity implements Serializable {
...
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "table_friends", joinColumns =
@JoinColumn(name = "userId"), inverseJoinColumns =
@JoinColumn(name = "friendId"))
private List<User> friends;
@ManyToMany(cascade = CascadeType.ALL)
@JoinTable(name = "table_friends", joinColumns =
@JoinColumn(name = "friendId"), inverseJoinColumns =
@JoinColumn(name = "userId"))
private List<User> friendsof;
내가 몇 "사용자"를 생성하고 친구 목록에 추가 :
User u1 = new User();
User u2 = new User();
User u3 = new User();
u1.getFriends().add(u2);
u1.getFriendsof().add(u2);
u1.getFriends().add(u3);
u1.getFriendsof().add(u3);
내가 목록 u1.getFriends().remove(u3)
에서 친구를 제거, 모든 것이 괜찮 여기
u3.remove()
에서 사용자를 삭제하려면 u1의 친구가 여전히 동일하지만 이미 친구의 데이터베이스 목록에 나와 있습니다.
- 사용자를 삭제 한 후 어쨌든 목록을 새로 고칠 수 있습니까?
- 그렇다면 새로 고침해야하는 친구 목록을 어떻게 알 수 있습니까?
편집 : 또한 (캐스케이드 = CascadeType.ALL)을 제거해야합니다. 왜냐하면 u1을 제거하면 모든 쌍을 이루는 멤버가 제거되기 때문입니다. 이것이 올바른 행동입니까?
모든 계단식을 이미 제거했습니다. 제거 할 때는 EntityManager em.remove (u)를 사용합니다. 하지만 em.remove (u3) 이후에 (MySQL 관리자가) 데이터베이스를 체크인 할 때 u3이 존재하지 않기 때문에 예상했던대로 작동하지 않습니다. 그러나 u1.friends에 여전히 존재합니다. 재시작 프로그램을 종료하면 사라집니다. 왜 이렇게 늦었 을까? – galica
흠. 이상 하네. 내 애플 리케이션에서 항목을 제거하려고 모든 관계가 제대로 업데이 트됩니다. ^^이 이상한 행동으로 질문을 업데이트해야한다고 생각합니다. 다른 누군가가 당신을 도울 수있을 것이라고 확신합니다 –
어떻게 할 수 있습니까? – galica