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

无法按照预期的结果集使用Spring jpa查询wit in子句

苗信鸥
2023-03-14

我有一个spring jpa查询,需要从一个表中获取两条记录。在这里,当使用OR子句时,我无法获得两条记录。

@Query("select i from Table i where i.id.company=?1 AND i.id.employee=?2 OR i.id.employee=?3")
    List<Table> findByCompanyAndEmployee(@Param("company")String company,@Param("employee") String employee, @Param("employee1") String employee1);

后来意识到我不应该使用OR子句,所以用IN子句检查,但我仍然可以得到一条记录。从以下查询:

@Query("select i from Table i where i.id.company=?1 AND i.id.employee IN ?2")
    List<Table> findByCompanyAndEmployee(@Param("company")String company,@Param("employees") List<String> employees);

有人能帮我把记录列表作为结果集吗?

这是我调用方法的结果集:

  List<Table> empList= TableRepo.findByCompanyAndEmployee(SomeCompany, Arrays.asList(Employee1, Employee2));

这应该返回如下结果:

COMPANY     Employee    Duties    EmployeeId
SomeCompany Employee1   1,2,3,4    12345
SomeCompany Employee2   1,3,8,9    23281

表实体:

@EmbeddedId
    private ID id;
    @Column(name="Employee")
    private String Employee;
    @Column(name ="Duties")
    private String Duties;
    @Column(name="EmployeeId")
    private String EmployeeId;

@Embeddable

@Column(name = "COMPANY")
private String company;

共有2个答案

冷英博
2023-03-14

试试这个:

@Query("select i from Table i where i.id.company=:company AND i.id.employee IN (:employee)")
List<Table> findByCompanyAndEmployee(@Param("company")String company,@Param("employees") List<String> employees);
韩捷
2023-03-14

你试过这个吗?

      select i from Table i where 
     i.id.company=?1 AND i.id.employee
      IN (? 2, ?3) 
 类似资料:
  • 问题内容: 我有带日期对象的文档。 初始化Firestore的代码: 查询代码: 我总是在获取所有记录,并且看起来where子句没有得到应用。在Firebase控制台上,我看到的存储为时间戳。 Firebase控制台中的文档: 问题答案: Cloud Firestore查询是不可变的,这意味着您无法更改现有查询的属性。如果通过调用方法更改值,它将成为一个新查询。因此,要解决此问题,请链接所有方法调

  • 问题内容: 所以我创建了一个集成脚本,但是由于某种原因它没有显示出正确的结果。我的查询是 结果中出乎意料的一行之一是这个 ID为11的组具有display_style_priority 2000而不是5200。它应显示具有display_style_priority 5200的用户组ID。这是该用户所在的排名最高的组。有人可以指出我做错了什么。 问题答案: 尝试将GROUP BY更改为 其他大多数

  • 我试图构建一个Spring Boot REST API,从MySQL DB中获取数据。这是我在Spring Boot REST API应用程序的存储库代码中定义的JPA查询方法: 这是我要查询的表的详细信息:

  • 问题内容: 我正在使用Newtonsoft的Json.Net从以下json中选择节点: 以下C#代码段 产量: 现在,这很酷,我想做的是按客户端代码过滤,我认为 可以,但是我显然对语法不够了解。这将返回一个空列表: 并且单个令牌选择器返回null: 我在https://jsonpath.curiousconcept.com/上尝试了几种不同的配置,看来我的查询语法确实坏了。 使用Flow Comm

  • 这是我索引中的文档(也可以有几个): 从逻辑上讲,我试图建立这个条件: 我的问题(来自kibana): 我正在与上述范围内的字段的范围查询与上面的其他字段进行比较。但没有得到任何命中!我想检索具有在给定和日期。 在这个领域很缺乏经验,不知道为什么不起作用!请帮助如何修复此查询以做到这一点?

  • 问题内容: 以下查询对我来说绝对正常: 但是,如果我使用而不是与子查询的结果进行比较,则不会得到任何结果。如何在上述查询中使用? 问题答案: 首先,这个查询 应该 不会是工作的罚款: 因为不正确的SQL。并且,您应该学习使用正确的语法。大概,您打算: 可以想象,您可以在子查询中添加代替和’%’的内容: 但我会这样写: 这与查询没有完全相同的作用。它做一些更合理的事情。它会确定子查询中是否有 任何