이 같은 다 대다 관계가있는 JPA 오브젝트 있습니다JPQL을 사용하여 조인 테이블에서 항목을 삭제하는 방법은 무엇입니까?
@Entity
public class Role {
//...
@ManyToMany(fetch=FetchType.EAGER)
@JoinTable(
name="RolePrivilege",
joinColumns=
@JoinColumn(name="role", referencedColumnName="ID"),
inverseJoinColumns=
@JoinColumn(name="privilege", referencedColumnName="ID")
)
private Set<Privilege> privs;
}
이 RolePrivilege에 대한 JPA의 객체가되지 않습니다, 그래서 삭제할 JPQL 쿼리를 작성하는 방법을 잘 모르겠어요 역할 객체의 privs 필드에있는 항목. 예를 들어,이 시도했지만 작동하지 않습니다. Role.privs가 매핑되지 않는다고 불평합니다.
DELETE FROM Role.privs p WHERE p.id=:privId
다른 어떤 시도를해야할지 모르겠습니다. 물론 Join table RolePrivilege에서 삭제하는 네이티브 질의를 작성할 수 있습니다. 하지만 그렇게하면 네이티브 쿼리에 의해 업데이트되지 않는 로컬 캐시 된 개체와 심하게 상호 작용할 것이라고 걱정됩니다.
이렇게 조인 테이블에서 항목을 제거하는 JPQL을 작성할 수 있습니까? 그렇지 않은 경우 모든 Role 개체를로드하고 각 Role 개체를 privs 컬렉션에서 제거한 다음 각 역할을 지속 할 수 있습니다. 그러나 단순한 JPQL 쿼리가 모든 것을 한꺼번에 처리한다면 그것은 어리석은 것처럼 보입니다.