java - Hibernate createSQLQuery 不接受 Left 函数

标签 java mysql hibernate

我正在尝试检索特定字段的第一个字符的不同列表,但 hibernate 返回以下错误。

org.hibernate.hql.internal.ast.QuerySyntaxException: 
unexpected token: LEFT near line 1, column 17 [Select DISTINCT LEFT(name,1)

代码

Query query = sessionFactory
                .getCurrentSession()
                .createSQLQuery(
                        "Select DISTINCT LEFT(name,1) from Name 
                         WHERE age = :age");
query.setParameter("age", age);
return query.list();

我找到了这个 answer那没有帮助。

预期输出

如果我搜索 age 12,它应该返回年龄值为 12 的名字的第一个字符,例如:a,b,f,g,k,l,z

最佳答案

改用子字符串。

Select DISTINCT SUBSTRING(name, 1, 1) from Name WHERE age = :age

关于java - Hibernate createSQLQuery 不接受 Left 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32491693/

相关文章:

java - 我正在从 log4j.xml 迁移到 log4j2.xml 。如何在 log4j2.xml 中的 RollingAppender 中设置 <param name ="Append"value ="true"/>

java - 如何创建类似于@autowire和@value的自定义注释

java - 将父类(super class)类型转换为子类类型?

php - MYSQL 选择 'random' 行,但如果再次调用,总是给出相同的随机行

mysql - 如何查询blob数据

java - E/UncaughtException : android. content.res.Resources$NotFoundException:资源 ID #0x7f0800a8

php - 什么 MySQL 列类型来保存 PHP time() 函数结果的值?

hibernate - 一对多 hibernate 的最佳实践是什么

java - 列 'id' 的列说明符不正确

Hibernate:如何在 Annotation 中将三个 3 表连接到一个连接表中?