2011-01-04 3 views
0

하이에서 삭제하고이 같은 간단한 매핑을 가지고 :캐스케이드 내가 최대 절전 모드 구현과 JPA2을 사용하고 같은 테이블

@Entity 
@Table(name = "users") 
public class User { 

    @Id 
    @GeneratedValue(strategy = GenerationType.IDENTITY) 
    private Integer id; 

    @OneToMany(mappedBy = "user", cascade = ALL) 
    private List<SubscribedUser> subscribedUsers; 

} 

및 ID 클래스 두 번째 테이블 (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; 
} 
을 1.

user | subscribed_user 
1 | 2 

2 :

는 subscribed_users 테이블이 우리가이 개 기록을 가지고 가정 할 수 있습니다.

user | subscribed_user 
2 | 1 

문제는 내가 ID = 1. 사용자를 삭제하면 첫 번째 레코드가 캐스케이드 옵션을 올바르게 삭제됩니다이지만, 여전히 ID = 1 사용자에 대한 참조입니다 있기 때문에 나는 오류를 얻었다 subscribed_users 테이블의 두 번째 항목에서. 두 번째 레코드를 연쇄 적으로 삭제할 가능성이 있습니까?

감사

DAWID

지금까지 내가 이해

답변

2

, 당신은 SubscribedUser 년대 사이의 양방향 관계없이 자동으로 그것을 할, 그래서 같은 것을 추가 할 수 없습니다 :

@OneToMany(mappedBy = "subscribedUser", cascade = CascadeType.REMOVE) 
private Set<SubscribedUser> dependentUsers; 
관련 문제