사용자에게 특정 역할을 제거하는 방법을 모르기 때문에 문제가 있습니다. 이 문제는 Permission 클래스에서 단방향 관계로 연결됩니다. 다음은 관련 코드 조각입니다.단방향 관계로 엔티티 제거 @ManyToOne (JPA)
클래스 사람
@Entity
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long userId;
@OneToMany(cascade = CascadeType.ALL, fetch=FetchType.LAZY, mappedBy="user")
private Collection<Role> roles;
클래스 역할
@Entity
public class Role {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long roleId;
@ManyToOne(fetch=FetchType.LAZY)
private User user;
나는이 방법
user.getRoles().remove(roleToRemove)
entityManger.merge(user)
roleToRemove이 datebase에서 컬렉션에서 삭제되었지만되지 않았습니다에서 사용자의 특정 역할을 제거하기 위해 노력했다.
그래서, 내가
orphanRemoval = true
을 추가 그리고 현재 내가 권한 클래스에서 발생하는 단방향 관계에 문제가 (나는 완료되었습니다 테스트를 썼다). 나는 제거하고자하는 idRole이 Permission 테이블에 존재하기 때문에 DatabaseExepction을받습니다.
@Entity
public class Permission {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long permissionId;
@ManyToOne(fetch=FetchType.LAZY)
private Role role;
제 질문은이 문제를 어떻게 관리 할 것인가입니다.
"답변"에서 "관계 소유자"와 "양측의 관계 업데이트"를 처리했음을 확인 했습니까? 자세한 내용이 필요하다고 생각하면 내 대답에 게시해야합니다. 쓰기 스타일을 개선하여 앵무새 게임을하면 좋은 맛을 시연하는 것이 아닙니다. –
스타일과 취향은 보는 사람의 눈에 있지만 역할이 병합되어야한다고 언급하지 않았기 때문에 대답은 반만 맞습니다. 비슷한 문제가 발생할 가능성이있는 사람들에게 완벽하고 유용하게 사용하려면 답변을 추가 정보로 자유롭게 업데이트하십시오. 그렇지 않으면 OP가 '최상의'답변을 결정할 수 있습니다. 결국 이러한 사이트에서 여러 답변을 허용하는 것입니다. – Chris
글쎄 그건 끔찍한 망상이다. 양쪽에서 병합하는 것은 100 % 불필요합니다. http://stackoverflow.com/questions/20068742/jpa-updating-bidirectional-association 나는 당신이 내 눈을 여는 것에 대해 지금 하나의 표를 주어야한다고 생각한다. :) –