sql - 使用 Panache 选择字符串包含子字符串的位置
问题描述
我目前正在尝试使用 Ms SQL-Server 和 Panache-Repositories 实现“加载 X.name 包含 y 的所有 X”功能。我知道 SQL 查询 "SELECT * FROM X WHERE X.name LIKE '%0y%'" 有效,但我无法使用 Panache-Query 让它工作。我试过了
@ApplicationScoped
public class XRepository implements PanacheRepository<X> {
public List<X> listWhereLike(String like) {
return list("name like ?1", "%" + like + "%");
}
public List<X> listWhereLike(String like) {
return list("name like %?1%", like);
}
public List<X> listWhereLike(String like) {
return list("contains(name, ?1)", like);
}
}
但它们都不起作用。它们要么由于意外字符“%”或“(”而引发异常,要么只是返回一个空列表。
我错过了什么?
解决方案
这就是解决方案,您只需将模式放入字符串中,然后再将其添加到查询中;
public List<X> listWhereLike(String like) {
String searchInput = "%" + like + "%";
return list("name like ?1", searchInput );
}
推荐阅读
- java - 创建 alertDialog 后无法解析 getButton 方法
- ios - iOS 9 中的简单赋值操作崩溃应用,但 iOS 11 中没有
- c# - 如何在 Windows 窗体应用程序的派生窗体中将控件拖动到基本 TableLayoutPanel?
- mysql - MySQL查找在多列中重复的值
- c# - 使用ninject注册实现通用接口的类
- linux - 使用 Libreswan 在 AWS 上配置多个 VPN IPSec 隧道之间的路由
- asp.net-mvc - 值未使用 ajax 从视图传递到控制器
- php - 从 iframe 获取 Codeigniter SESSION 用户
- java - 如何使用 Collections 或 Sets 在 Java 中的数据结构中组织数据结构?
- javascript - Reactjs 中的状态没有更新