【发布时间】: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