我正在尝试编写一个hibernate查询来搜索表Room是否包含包含string的一部分的roomname。字符串值在一个变量中。我写了一个查询来从表中获取确切的房间名称。
findRoom(String name) {
Query query = em.createQuery("SELECT a FROM Room a WHERE a.roomname=?1");
query.setParameter(1, name);
List rooms = query.getResultList();
return rooms;
}
在sql中,查询是这样的:
mysql_query("
SELECT *
FROM `table`
WHERE `column` LIKE '%"name"%' or '%"name"' or '"name"%'
");
我想知道用于搜索与我的查询匹配的表的hql查询。我不能直接使用字符串,所以搜索查询必须是可验证的,我需要查询中的所有三种类型,如果它以name开头,或包含名称或结束名称。
答案 0 :(得分:6)
我会做那样的事情:
findRoom(String name) {
Query query = em.createQuery("SELECT a FROM Room a"
+ "WHERE a.roomname LIKE CONCAT('%',?1,'%')");
query.setParameter(1, name);
List rooms = query.getResultList();
return rooms;
}
答案 1 :(得分:4)
使用like
代替=
:
Query query = em.createQuery("SELECT a FROM Room a WHERE a.roomname like ?1");
query.setParameter(1, "%"+name+"%");