gpt4 book ai didi

JPA 查询选择 "IN"子句中的多个值

转载 作者:行者123 更新时间:2023-12-05 06:45:21 24 4
gpt4 key购买 nike

我想为以下 SQL 语句创建一个 JPA 参数化查询

select * from car where (colour, speed) in (('red', 50), ('blue', 70))

此查询返回预期结果

entityManager.createQuery("from Car c where (c.colour, c.speed) in (('red', 50), ('blue', 70))", Car.class).getResultList();

如何将当前硬编码的值作为参数传递?

我提出了以下“可行”的解决方案。但我担心不能保证所有参数对都按预期顺序传递?我不想得到速度为“50”的“蓝色”汽车。
编辑: 已删除,因为它没有按预期工作,另请参阅@Gas 评论

最佳答案

在搜索时,我发现了一个非常相似的问题here.或许这样更符合这个问题。

但是,我实现了一些稍微不同的东西。

@Query("SELECT p FROM Product p "
+ "LEFT JOIN p.categories category "
+ "WHERE UPPER(p.name) LIKE UPPER(CONCAT('%', COALESCE(:searchRequest, ''), '%')) "
+ "AND UPPER(p.description) LIKE UPPER(CONCAT('%', COALESCE(:description, ''), '%')) "
+ "AND p.price BETWEEN :priceLow AND :priceHigh "
+ "AND p.averageRating >= :averageRating "
+ "AND p.archived = :archived "
+ "AND ((category.name IN :selectedCategories) "
+ "OR (:amountOfSelectedCategories = 0 AND category IN (SELECT c FROM Category c))) "
+ "GROUP BY p "
+ "HAVING SIZE(p.categories) >= :amountOfSelectedCategories"
)
Page<Product> findAllBySearchModel(
Pageable pageable,
@Param("searchRequest") String searchRequest,
@Param("description") String description,
@Param("priceLow") BigDecimal priceLow,
@Param("priceHigh") BigDecimal priceHigh,
@Param("averageRating") double averageRating,
@Param("archived") boolean archived,
@Param("selectedCategories") List<String> selectedCategories,
@Param("amountOfSelectedCategories") int amountOfSelectedCategories
);

关于JPA 查询选择 "IN"子句中的多个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24660081/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com