0

我是 Spring 新手,尽管我的问题可能看起来不成熟。

这是我一直陷入的一个大障碍。我正在尝试选择正确的方法来实现基于通配符的搜索逻辑,无论是选择 JDBC、Hibernate 还是 JPA 和存储库。

我将演示这个问题。假设我们在网页中有一个搜索表单,有人可能会在其中进行查询以检索 FirstName 和 LastName,并说例如有记录:

  • “弗雷德·弗雷德里克森”
  • “阿尔伯特詹姆逊”
  • “沃森达尔博特”

可以使用 *alb* 之类的东西,我们应该得到:

  • “阿尔伯特詹姆逊”
  • “沃森达尔博特”

或者使用 ????son 我们期望只得到“Albert Jameson”。

学习 Spring 我发现“like”子句可能只是硬编码的,比如:

@Query("select u from User u where u.firstname like %?1") List findByFirstnameEndsWith(String firstname);

如果使用 JPA 存储库。

我希望我的问题变得更清楚了。

非常感谢您提供任何帮助或相关建议。

4

1 回答 1

0

我会在以下示例中使用 JPA

@NamedQuery(name="Profile.getPerson", query="SELECT u FROM User u WHERE u.firstName LIKE ?1");

Query query = session.getNamedQuery("Profile.getPerson");
query.setParameter(1, patternYouWant);        
query.getResultList();
于 2013-06-07T19:19:07.393 回答