2017-12-19 54 views
0

나는 내 질문에 대한 답을 찾고 있었고 지금까지는 아무 것도 나오지 않았다.Spring 데이터에서 두 개의 테이블 엔티티에 합류하기 where와 함께 JPA where

빠른 설명 :

사람 수 이상의 역할을 가지고 있으며, 역할은 다 대다 권한을 가진 관계가있다.

@Entity 
@Data 
@NoArgsConstructor 
@AllArgsConstructor 
@Table(name = "ROLE") 
@Where(clause = "RECORD_STATUS = 'A'") 
@SQLDelete(sql = "UPDATE ROLE SET RECORD_STATUS = 'D' where OBJID = ?") 
public class Role extends BaseEntity implements Serializable { 

    private String roleDescription; 
    private String roleName; 



    @JoinTable(
     name = "ROLE_PRIVILEGE", 
     joinColumns = @JoinColumn(
       name = "roleOid" 
     ), 
     inverseJoinColumns = @JoinColumn(
       name = "privilegeOid" 
     ) 
    ) 
    @Where(clause = "RECORD_STATUS = 'A'") 
    @ManyToMany(fetch = FetchType.EAGER) 
    List<Privilege> privileges; 
} 

권한 기업 :

@Entity 
@Data 
@NoArgsConstructor 
@AllArgsConstructor 
@Table(name = "ROLE_PRIVILEGE") 
@Where(clause = "RECORD_STATUS = 'A'") 
@SQLDelete(sql = "UPDATE ROLE_PRIVILEGE SET RECORD_STATUS = 'D' where OBJID 
= ?") 
public class RolePrivilege extends BaseEntity implements Serializable { 

    private String roleOid; 
    private String privilegeOid; 

} 

을 :

@Entity 
@Data 
@NoArgsConstructor 
@AllArgsConstructor 
@Table(name = "PRIVILEGE") 
@Where(clause = "RECORD_STATUS = 'A'") 
@SQLDelete(sql = "UPDATE PRIVILEGE SET RECORD_STATUS = 'D' where OBJID = ?") 
public class Privilege extends BaseEntity implements Serializable { 

    private String description; 
    private String privilegeName; 



} 

내가 같이이 두 테이블을 조인하고 싶어

나는 엔티티, 역할이 문제는, 내가하려고 할 때이다. 사람의 역할을 얻으면, 그들은 모두 특권을 얻습니다. 그러나, ROLE_PRIVILEGE의 실재물에 where 절을 신경 나던 최대 절전 모드 : 나는 (역할은 더 이상 특권이없는) 역할 - 권한 튜플을 비활성화 할 때, 여전히 나에게 온다

select 
privileges0_.role_oid as role_oid8_23_0_, 
privileges0_.privilege_oid as privileg7_23_0_, 
privilege1_.objid as objid1_21_1_, 
privilege1_.creation_date as creation2_21_1_, 
privilege1_.last_change_date as last_cha3_21_1_, 
privilege1_.luc as luc4_21_1_, 
privilege1_.record_status as record_s5_21_1_, 
privilege1_.user_created as user_cre6_21_1_, 
privilege1_.description as descript7_21_1_, 
privilege1_.privilege_name as privileg8_21_1_ 
from 
role_privilege privileges0_ 
inner join 
    privilege privilege1_ 
    on privileges0_.privilege_oid=privilege1_.objid 
where 
(
    privilege1_.RECORD_STATUS = 'A' 
) 
and privileges0_.role_oid=? 

내 말은,. 어디서 ROLE_PRIVILEGE 테이블에 @where 절을 추가 할 수 있습니까?

모든 조언은 많은 도움이됩니다.

답변