字符串数组中的休眠搜索

Posted

技术标签:

【中文标题】字符串数组中的休眠搜索【英文标题】:Hibernate search in string array 【发布时间】:2016-01-16 18:18:21 【问题描述】:

我不熟悉休眠并正在寻找 a) 一个解决方案 b) 解决方案在性能和查询复杂性方面的比较。

示例实体 - (假设需要休眠注释)

Class Ent
String name;
List<String> alias;

我需要一个解决方案,它可以在单个数据库查询中搜索名称和别名数组中的字符串“示例”。

我可以使用带有 RAW sql (select * ...) 的 hibernate 来做到这一点。有人可以使用 HQl、Criteria 等提出更好的解决方案吗

【问题讨论】:

我相信你想说 HQL。我尝试使用 HQL 但遇到问题,因为 hibernate 不支持 SQL 中存在的任何运算符。我正在与 IN 运营商合作.. 【参考方案1】:

假设alias可以为空:

select distinct e from Ent e left outer join e.alias a 
where e.name like :term or a.name like :term

或:

select e from Ent e
where e.name like :term
 or e.id in
  (select e2.id from Ent e2 join e2.alias a where a.name like :term)

我更喜欢第二个选项,因为它应该更快(不是distinct),并且可以更轻松地对结果进行分页。

【讨论】:

以上是关于字符串数组中的休眠搜索的主要内容,如果未能解决你的问题,请参考以下文章

如何在 C# 中搜索字符串数组中的子字符串

Objective C中的两个数组中的字符串搜索

Actionscript 3 在数组中搜索字符串

在Elasticsearch中的数组中进行精确的字符串搜索

字符串数组搜索

从位于字典中的数组中删除与搜索词匹配的所有值(字符串)?