[英]Joining two table entities in Spring Data JPA with where clause
我一直在下面尋找我的問題的答案,到目前為止沒有任何進展。
快速說明:
一個人可以有多個角色,並且角色與特權之間具有多對多關系。
我有實體, 角色 :
@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 = "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;
}
我想像這樣加入這兩個表:
@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;
}
問題是,當我嘗試獲得一個人的角色時,它們都具有特權。 但是,休眠並不關心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=?
我的意思是,當我停用角色特權元組(角色不再具有該特權)時,仍然會出現在我身上。 在哪里可以將@where子句添加到ROLE_PRIVILEGE表中?
所有建議都非常有用!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.