用于搜索字符串部分的Hibernate查询

时间:2015-02-17 06:27:22

标签: java hibernate orm hql

我正在尝试编写一个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开头,或包含名称或结束名称。

2 个答案:

答案 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+"%");