当前位置: 首页 > 面试题库 >

使用like运算符进行Hibernate HQL查询

夏侯博
2023-03-14
问题内容

设置以下映射

@Entity
public class User {

    private Integer id;

    @Id;
    private Integer getId() {
        return this.id;
    }

}

通知ID是一个整数。现在我需要使用like运算符进行此HQL查询

Query query = sessionFactory.getCurrentSession().createQuery("from User u where u.id like :userId");

ATT:它 就像 运算符NOT = (等于运算符)

然后我用

List<User> userList = query.setParameter("userId", userId + "%").list();

但是不起作用,因为Hibernate抱怨在调用User.id的getter时发生了IllegalArgumentException

即使我使用

query.setString("userId", userId + "%");

这没用

我应该使用什么来传递查询?


问题答案:

根据Hibernate参考:

str()用于将数字或时间值转换为可读的字符串

所以当我使用

from User u where str(u.id) like :userId

工作正常



 类似资料:
  • 问题内容: 通配符*只能在单词的末尾使用,例如。 我想用like查询,该怎么做? 问题答案: Lucene提供了ReverseStringFilter,它允许执行通配符搜索,例如* user。它通过以相反顺序索引所有术语来工作。 但是我认为没有办法做类似’LIKE%user%’的事情。

  • 问题内容: 在我的Hibernate JPA示例代码中。 给整个字符串时它工作正常 但是,当我们赋予ie 或 其实我的想法是我给运算符,使它可以工作给定字符串的任何字符。 问题答案: 您正在使用 代替 第一个将返回 等的行。

  • 在 Transact-SQL 中,LIKE 运算符用于搜索带有 WHERE 子句的列中指定的模式。Transact-SQL 中的 LIKE 子句用于比较相同的值以使用通配符运算符。 两个通配符与 LIKE 运算符结合使用: - 百分号代表零、一个或一些字符。 - 下划线符号代表单个字符。 注意:MS Access 使用星号 () 代替百分号 () 和问号 (?) 而不是下划线 ()。 百分号代表

  • 本文向大家介绍Mysql| 使用通配符进行模糊查询详解(like,%,_),包括了Mysql| 使用通配符进行模糊查询详解(like,%,_)的使用技巧和注意事项,需要的朋友参考一下 通配符的分类: %百分号通配符: 表示任何字符出现任意次数 (可以是0次). _下划线通配符:表示只能匹配单个字符,不能多也不能少,就是一个字符. like操作符: LIKE作用是指示mysql后面的搜索模式是利用通

  • 问题内容: 我正在使用psql在Postgres中查询数据库。我使用以下查询来搜索一个名为 tag 的字段,该字段的数据类型为文本数组: 现在,我需要创建一个查询,以在 标签 字段中搜索以字母“ A”开头的任何单词。我尝试了以下方法: 这给了我一个语法错误。关于如何将LIKE与文本数组结合使用的任何建议? 问题答案: 使用函数将数组转换为行集: 本应算唯一条目表,只需更换你的主键的名称。 话虽这么

  • 我能够存储、检索和查询具有枚举类型的实体(使用JPA/Hibernate)。枚举字段使用@Enumerated(EnumType.String)进行注释。 是否可以执行类似的操作? 谢谢你帮忙。 ---更新: 当我试图用这个来查询时: