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

使用列表查询 JPA 元素集合

葛志国
2023-03-14

如何查询包含至少一个搜索条件元素的@ElementSet

给定这个对应的数据库模式

对于此实体类

@Entity
@Table(name = "companies")
public class Company {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private Integer id;

    @Column(nullable = false)
    private String name;

    @ElementCollection
    @CollectionTable(
        name="companies_products",
        joinColumns = @JoinColumn(name="company_id")
    )
    @Column(name="product")
    private List<String> products = new ArrayList<>();

    // ... getters/setters
}

我想在数据库中查询有产品列表的公司。在SQL中我可以做

SELECT DISTINCT
    c.*
    FROM companies c
    LEFT JOIN companies_products cp ON c.id = cp.company_id
    WHERE
        cp.product IN ('food', 'electronics', 'books')

等效的HQL/JPQL查询是什么样子的?

我找到了Hibernate的集合相关表达式和限定路径表达式,但是我无法创建一个有效的查询。

>

  • 从公司 C 其中 c.products in (:p棒) 使用 List.of(“食品”、“电子产品”、“书籍”)作为命名参数

    org . spring framework . Dao . invaliddataaccessapiusageexception:参数值[phones]与预期类型[java.util.Collection (n/a)]不匹配;嵌套异常是Java . lang . illegalargumentexception:参数值[food]与预期类型[java.util.Collection (n/a)]不匹配

    FROM公司c WHERE值(c.products)IN(:prods)

    无法创建公共抽象java.util.列表com.example.demo.CompanyRepository.find产品(java.util.列表)的查询!原因:查询方法公共抽象java.util.列表com.example.demo.CompanyRepository.find产品(java.util.列表)的验证失败!;嵌套异常java.lang.IllegalArgument异常:查询方法公共抽象java.util.列表com.example.demo.CompanyRepository.find产品(java.util.列表)的验证失败!

    从公司 C 其中元素(C.产品) 在 (:p棒)

    无法创建公共抽象java.util.列表com.example.demo.CompanyRepository.find产品(java.util.列表)的查询!原因:查询方法公共抽象java.util.列表com.example.demo.CompanyRepository.find产品(java.util.列表)的验证失败!;嵌套异常java.lang.IllegalArgument异常:查询方法公共抽象java.util.列表com.example.demo.CompanyRepository.find产品(java.util.列表)的验证失败!

  • 共有1个答案

    奚光霁
    2023-03-14

    谢谢克里斯。您建议的查询选择c从公司c加入c.productsp WHere p IN(: prods)有效。感谢您的研究。

     类似资料:
    • 接口说明 查询素材(分页查询素材列表) 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 API地址 GET /wish3dearth/api/material/v1.0.0/pageList 是否需要登录 是 请求字段说明 参数 类型 请求类型 是否必须 说明 token string header 是 当前登录用户的TOKEN title string

    • 接口说明 查询素材(分页查询素材列表) 如需调用,请访问 开发者文档 来查看详细的接口使用说明 该接口仅开放给已获取SDK的开发者 如开启https功能,请求地址的协议应改为https,如:https://www.example.com/wish3dearth/api/access/v1.0.0/getLicenseInfo API地址 GET /wish3dearth/api/material/

    • lindex 返回名称为key的list中index位置的元素,例如: redis 127.0.0.1:6379> lindex mylist5 0

    • 本文向大家介绍用MongoDB子元素查询?,包括了用MongoDB子元素查询?的使用技巧和注意事项,需要的朋友参考一下 您可以为此使用位置运算符$。首先让我们创建一个包含文档的集合- 以下是在方法的帮助下显示集合中所有文档的查询- 这将产生以下输出- 这是在MongoDB中查询子元素的方法- 这将产生以下输出-

    • 问题内容: 我在使用JPA Criteria API构建查询时遇到问题。 实体和重要属性: 我需要一个查询,该查询将返回数据库中按评论数(在中)排序的所有帖子。起初,我认为可以通过以下方式实现: 但是功能不能用于在中对其进行排序。 因此,我发现了有关,并尝试了以下操作: 通过此查询,我没有得到正确的结果。我知道我缺少设置的“注释”,但是不知道如何添加该部分。我不是很熟悉。该查询应如何使所有帖子按其

    • 我对MongoDB很陌生。我在Java中使用spring-data-mongodb进行查询。请指导我,如果这是可以实现的。 假设我有两个对象“car”和“user”,如下所示,其中car有用户列表, 但是,如果有一个引用为DBREF的元素列表,如何实现这一点?? 多谢帮忙。