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 절을 추가 할 수 있습니까?
모든 조언은 많은 도움이됩니다.