当前位置: 首页 > 知识库问答 >
问题:

使用where子句连接Spring Data JPA中的两个表实体

斜高翰
2023-03-14

我一直在为下面的问题寻找答案,到目前为止什么也没有找到。

@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;

}
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=?

共有1个答案

边国安
2023-03-14

我真的不知道我是怎么错过的,但找到了解决办法。

@WhereJoinTable(clause = "RECORD_STATUS = 'A' ")

JPA@jointable(带有额外连接条件)

 类似资料:
  • 我已经成功地配置和映射了多个实体,一切正常。 现在我想使用一个自定义查询,将多个实体连接起来,并在这些实体上定义一些where子句。 SQL为我的提供了正确的结果。但是我没有where子句对所有其他映射实体的限制,比如,等等。 我使用的是惰性加载,当我使用,JPA将执行一个新的select和my where子句。 那么,我如何才能使我所有的连接实体建立在where子句及其限制之上呢。

  • 问题内容: 我有两张桌子。 我这样查询: 我使用UNION是因为如果用户在第一个表和第二个表中都存在,我想为每个用户获取不同的值。 例如: 如果peter在任何一张桌子上,我应该一次获得名称,因为它在两个桌子上都存在。 我仍然从第一张桌子得到一排,从第二张桌子得到第二排。怎么了? 任何帮助表示赞赏。 问题答案: 您的SQL有两个问题: (这是 不是 问题,但应考虑)使用过,而不是表,您创建性能噩梦

  • 问题内容: 我有一个查询: 我只想从表中选择周期和年份等于的行: 我知道最简单的方法是使用连接,但是问题是-在应用程序中,我只能在后面添加一个子句 因此,解决方案应该是: 那可能吗? 编辑: 结果应与以下相同: 问题答案: 您可以为条件使用多个列: 但是戈登的解决方案可能更快。

  • 我能够使用Spring Data JPA中的@OneToOne使用主键关系连接两个实体Employee和Department并实现了这个结果,但是我不知道如何将where子句应用到我的需求中。下面是查询 员工:实体 部门实体 我的问题是如何在Repository类中的where子句之后应用其余的'AND'条件。类似于在存储库或服务类中编写的任何QueryByMethod(or)条件。 请建议是否有

  • 问题内容: 在WHERE子句中有使用SELECT语句描述的名称吗?这是好/不好的做法吗? 这会是更好的选择吗? 它远没有那么优雅,但是运行起来比以前的版本要快。我不喜欢它,因为它在GUI中没有非常清晰地显示(并且SQL初学者需要理解它)。我可以将其分为两个独立的查询,但是随后事情变得混乱了…… 注意:我不仅需要日期和分数(例如姓名) 问题答案: 称为相关子查询。它有它的用途。