quarkus Hibernate hql如何使用like any (array[:logisticsNo])
时间: 2024-02-28 22:55:07 浏览: 17
在 Quarkus 中使用 Hibernate HQL 进行模糊查询(like)和任意元素(any)查询时,可以使用 IN 子句来查询数组类型的参数。例如:
```
String[] logisticsNos = new String[]{"123456", "789012", "345678"};
String hql = "SELECT o FROM Order o WHERE o.logisticsNo IN (:logisticsNos)";
List<Order> orders = entityManager.createQuery(hql, Order.class)
.setParameter("logisticsNos", logisticsNos)
.getResultList();
```
这里的 `logisticsNos` 是一个 String 类型的数组,我们可以使用 `setParameter` 方法将其传递给查询。在 HQL 中,使用 IN 子句来查询一个集合或数组类型的参数。
如果要使用 LIKE 子句来进行模糊查询,可以使用 CONCAT 函数来拼接字符串。例如:
```
String hql = "SELECT o FROM Order o WHERE CONCAT('%', o.logisticsNo, '%') LIKE :logisticsNo";
List<Order> orders = entityManager.createQuery(hql, Order.class)
.setParameter("logisticsNo", "%345%")
.getResultList();
```
这里使用了 CONCAT 函数将 `%` 和订单号拼接起来,然后使用 LIKE 子句进行模糊匹配。在 `setParameter` 方法中,我们传递了模糊匹配的字符串 "%345%"。注意,在 HQL 中,使用 LIKE 子句时,需要将参数用 % 符号括起来。