Hibernate在字符串数组中搜索

时间:2016-01-16 18:18:21

标签: java sql hibernate hql

我是hibernate的新手并且正在寻找 a)解决方案 b)在性能和查询复杂性方面比较解决方案。

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

Class Ent{
String name;
List<String> alias;
}

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

我可以使用hibernate和RAW sql(select * ...)来做到这一点。有人可以建议使用HQl,Criteria等更好的解决方案..原因

1 个答案:

答案 0 :(得分: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),因为它可以更轻松地分页结果。