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

Mah*_*hin 2 java orm hibernate 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;
         }
Run Code Online (Sandbox Code Playgroud)

在sql中,查询是这样的:

mysql_query("
SELECT *
FROM `table`
WHERE `column` LIKE '%"name"%' or '%"name"' or '"name"%'
");
Run Code Online (Sandbox Code Playgroud)

我想知道用于搜索与我的查询匹配的表的hql查询.我不能直接使用字符串,所以搜索查询必须是可验证的,我需要查询中的所有三种类型,如果它以name开头,或包含名称或结束名称.

Jen*_*ens 6

使用like代替=

Query query = em.createQuery("SELECT a FROM Room a WHERE a.roomname like ?1");

query.setParameter(1, "%"+name+"%");
Run Code Online (Sandbox Code Playgroud)

  • 我相信“%”+姓名+“%”包括其他情况 (2认同)
  • @Mahin `%` 代表零到 n 个字符。所以这个 `%name%` 包含了另外两个。 (2认同)

Mau*_*rry 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;
         }
Run Code Online (Sandbox Code Playgroud)