【发布时间】:2023-03-21 22:02:01
【问题描述】:
在我的应用程序中,我有类别 ID 列表。现在我想根据产品类别从数据库中获取产品,该产品类别将包含在该列表中,还有产品名称,如“XYZ”。如何通过使用 IN 子句来实现这一点. 有没有人知道我通过传递方式尝试过这个但我得到了空列表
我的代码是:
Object[] cids=final_cats.toArray();
String cds=final_cats.toString();
String query="select fpd from FTextProductDetails ftpd inner join ftpd.fProductDetails fpd WHERE fpd.categoryId in( "+cds+" )and ftpd.productName like ?" ;
Object[] values=new Object[]{'%'+productName+'%'};
List<Object[]> list=HibernatePaginationImpl.findProductsByName(query, values,pageSizeLimit , pageNumber,this.baseDao);
这里 final_cats 包含所有类别。
【问题讨论】:
-
由于您似乎在使用 Hibernate,因此您可以使用 Hibernate Criteria Query (docs.jboss.org/hibernate/orm/3.3/reference/en/html/…) 并使用
Restrictions.in(docs.jboss.org/hibernate/orm/3.3/api/org/hibernate/criterion/…) -
谢谢大卫先生。在这里我编写了自定义类 HibernatePaginationImpl,它将具有接受查询的静态方法。所以我需要传递查询并限制使用条件。
-
好的,如果您需要可以构建
PreparedStatement的SQL,那么您的SQL 中确实需要有很多?标记。由于CuE已经给你一个使用该技术的答案,我不会打扰。我希望你设法完成这项工作。祝你好运。 -
我已经回滚了您在标题中添加 [Colsed] 的编辑,因为 1)它是 Closed 的拼写错误,2)这不是您在 Stack Overflow 中表示已解决问题的方式:而是接受您的超时后自己的答案(或另一个答案)。