【问题标题】:How to select the best match in a JPA query如何在 JPA 查询中选择最佳匹配
【发布时间】:2013-02-09 17:23:27
【问题描述】:

以下查询将返回 like 匹配的第一项(实际上是任何旧项)。

TypeQuery<Company> query = em.createQuery(
   "select c from Company c where c.name like ?1", Company.class);
query.setMaxResults(1);
query.setParameter(1, "%" + name + "%");
result = query.getSingleResult();

但我希望最佳匹配显示为我的单一结果。
这里 best 表示与给定 name 差异最小的匹配。
我可以将哪种order by 应用于此查询以实现这一目标?

【问题讨论】:

  • 我认为你应该用SQL 标记这个问题以尽快获得帮助。
  • 问题是我知道如何在 SQL 中执行此操作,但在 JPQL 中不知道。
  • createNativeQuery() 呢?
  • 然后我的项目将绑定到单个数据库,这正是我试图避免的。
  • 您能否更好地定义“但是我希望最佳匹配显示为我的单一结果。”?字符串比较的最佳匹配是使用 = 运算符而不是 LIKE 运算符获得的。

标签: java sql jpa persistence jpql


【解决方案1】:

如果你需要这样的搜索,也许你可以将 lucene 和 hibernate 一起使用?

参见文档http://docs.jboss.org/hibernate/search/3.3/reference/en-US/html_single/#search-query-lucene-api

我认为这将是您所需要的。

也请看https://groups.google.com/forum/?fromgroups=#!topic/ravendb/-L0LMAScJnA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-25
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多