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

JPA中的条件if子句

杭昊空
2023-03-14

我有两张桌子“table1”和“table2”。对于表1中的每一行,表2中可以有多行

@Entity
@EntityListeners(AuditingEntityListener.class) 
@Table(name = "table1", schema = "dbo")
public class Table1 extends BaseDomain{
  @Id
  @GeneratedValue(strategy = GenerationType.AUTO)
  private Integer vendorId;
  private String name;
  private Integer companyId;
  private String details;

  @OneToMany(mappedBy = "table1",cascade = CascadeType.ALL)
  @NotFound(action = NotFoundAction.IGNORE)
  private Set<Table2> table2;

 // getter and setter for above
}

    @Entity
    @EntityListeners(AuditingEntityListener.class) 
    @Table(name = "table2", schema = "dbo")
    public class Table2 extends BaseDomain{
      @Id
      @GeneratedValue(strategy = GenerationType.AUTO)
      private Integer id;
      private Integer cityId;
      private Integer companyId;
      @OneToOne
      @JoinColumn(name = "vendorId")
      @JsonIgnore
      private Table1 table1;

     // getter and setter for above
    }

然后我创建了这样的存储库

@Transactional
public interface Table1Repository  extends JpaRepository<Table1, Integer> {

  Page<Table1> findByCompanyId(Integer companyId,Pageable pageable);

}

这将给出表1中按公司ID列出的行列表,以及表2中具有相应供应商ID的行列表。

到目前为止,我的实现工作正常。

答案是

{
  "content": [
    {
      "vendorId": 23,
      "name": "vendorname",
      "details": details,
      "table2": [
                 {
                  "id" :1,
                 "cityId":1,
                 },
                  "id" :2,
                  "cityId" : 3
                ]
    },
   {....}
]
}

目前,我以companyId作为输入,并给出了上述响应。现在我想把cityId作为一个输入。因此,表2的输出应该只包含给定cityId的详细信息。

那么,有谁能帮助我实现这一目标吗?我不想为表1和表2创建另一个模型。

共有1个答案

陆曜文
2023-03-14
Page<Table1> findByCompanyIdAndTable2_CityId(Integer companyId, Integer cityId, Pageable pageable);  

此方法将负责按cityId进行抓取。下划线(_)表示嵌套字段。但要使其工作,您需要急切地获取Table2。

@OneToMany(mappedBy = "table1",cascade = CascadeType.ALL, fetch=FetchType.EAGER)
 类似资料:
  • 如何创建高效的 JPA 条件查询,以便仅当实体存在于联接表中时才选择实体列表?例如,采用以下三个表: 有问题的查询(我希望 JPA 生成什么)是: 以下条件查询将产生类似的结果,但有两个连接: 根本问题似乎是我对USER_WORKGROUP连接表使用@JoinTable注释,而不是对连接表使用单独的@Entity,所以我似乎不能在条件查询中将USER_WORGGroup用作根。 以下是实体类:

  • #我想理解这个表达,它在说什么?“如果x:”是什么意思?通常在if语句之后总是有一个条件,但这个条件没有。我如何理解这一点?它在这个功能中做什么?

  • 我目前正在了解React Native中的if-else if-else语句的语法。下面是我理解的一个简单的if-else条件: 但是,当添加另一个条件来生成if-else if-else语句时,我遇到了问题。 如果有人能指出我的缺点,我将不胜感激!

  • 我有一个简单的角度/html代码,其中有一个表,每个

  • 我是thymeleaf的新手,在执行if条件时遇到了问题。我编写的代码是 问题是这段代码写完后,web页面会不断加载。谁能告诉我执行这个操作的正确方法。

  • 如何在钩子的if块中调用redux操作: 我有两个选择框。如果此人在选择框中键入,我将的选定id存储在状态中。如果用户选择了一个组,我将它存储在中,所以只有在两个条件都匹配的情况下,我才需要调用APIendpoint来获取。 如果我注释这段代码,就没有错误。如何使代码片段工作?