sql - 使用 Panache 选择字符串包含子字符串的位置

标签 sql jpa substring contains quarkus-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 );
  }

关于sql - 使用 Panache 选择字符串包含子字符串的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64385291/

相关文章:

mysql - 如果父行在 mysql 中被删除,如何自动删除所有引用行?

sql - 如何防止查询中出现惰性后台打印?

hibernate - Spring 数据 jpa 按查询计数

mysql - 未在 JPA 中创建的唯一约束

JavaScript 子字符串不接受用户输入

php - 由于动态加载的内容,Div 不会自动扩展

sql - 交通时刻表系统数据库设计

mysql - AppEngine + DataNucleus RDBMS + JPA 2 项目在使用 @OneToMany 注释时抛出异常

string - Boyer More exact 子串是否匹配动态规划的范例?

java - 如何解析管道分隔的 Attribute=Values 对?