实现搜索功能 - eclipselink SQL 以字符串作为参数和通配符 %

Implementing Search function - eclipselink SQL with string as parameter and wildcard %

我在对我的网站进行 SQL 查询时使用 eclipselink 语法时遇到困难。目前,我已经创建了一个带有适当按钮的搜索 text-box 条目。可以通过标题和描述搜索数据记录,但搜索内容必须与我的数据库数据中的 titles/descriptions 完全匹配。我的主要问题是使用带有参数 "searchString" 的 LIKE 子句和通配符功能 (%) 创建正确的 SQL 查询。

下面,我包含了来自实体 class 的查询示例。

@NamedQuery(name = "Ad.findByString", query = "SELECT a FROM Ad a WHERE a.title LIKE :searchString OR a.description LIKE :searchString")

我理解“:”标记表示正在使用参数。有没有人对如何实施通配符 % 功能以搜索包含搜索内容的 return 广告有任何建议?

下面我还包含了数据库中的 getSearchedAds 方法 class

public static Collection <Ad> getSearchedAds (String searchString) {
        EntityManager em = DBUtils.getEmFactory().createEntityManager();
        Collection<Ad> results = null;

        TypedQuery<Ad> q = em.createNamedQuery("Ad.findByString", Ad.class);
        q.setParameter("searchString", searchString);

        try {
            results = q.getResultList();

        } catch (Exception e) {
            results = null;
        }

感谢您的宝贵时间。

我认为您需要先将 db-wildcard 字符连接到 searchString,然后再将其设置为查询的参数:

searchString = "%" + searchString + "%";
q.setParameter("searchString", searchString);

并保持 NamedQuery 不变。