弹簧。基于通配符创建自定义搜索

时间:2013-06-07 19:07:46

标签: java spring search wildcard sql-like

我是Spring的新手,虽然我的问题似乎不成熟。

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

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

  • “Fred Fredrickson”
  • “Albert Jameson”
  • “Watson Dalbot”

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

  • “Albert Jameson”
  • “Watson Dalbot”

或者使用儿子我们希望只得到“艾伯特詹姆森”。

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

@Query(“从用户u中选择u,其中u.firstname喜欢%?1”)   列出findByFirstnameEndsWith(String firstname);

如果使用JPA存储库。

我希望我的问题有点清楚。

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

1 个答案:

答案 0 :(得分: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();