【发布时间】:2014-02-11 03:08:28
【问题描述】:
如何使用 HQL 获取前 4 个字符与我的字符串匹配的记录?
这是我的 HQL 语句:
Query query = HibernateUtil.getSessionFactory().getCurrentSession().createQuery("from User where substring(user, 4) like :user");
query.setParameter("user", "John");
什么都不返回。但是,如果我在 MySQL 中重用 SQL 语句并将单词“substring”更改为LEFT,那么它会返回很多记录。
我也尝试在我的 HQL 中将“substring”替换为“left”,但是当我这样做时它给了我这个错误:
org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: LEFT
【问题讨论】:
-
你试过
substring(user, 1, 4) like :user吗? -
在 HQL 中你不允许使用 mysql 函数。因此,最好使用本机 sql。即:stackoverflow.com/questions/8648787/…