我正在尝试在hibernate中执行以下操作:
Session session2 = HibernateUtil.getSessionFactory().openSession();
List<TitleEntity> tt = session2.createQuery(
"select * from title where url = 'http://google.com'
").getResultList();
但是,我得到以下错误:
Exception in thread "main" java.lang.IllegalArgumentException: org.hibernate.hql.internal.ast.QuerySyntaxException: unexpected token: * near line 1, column 8 [select * from title where url = 'http://google.com']
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:133)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:157)
at org.hibernate.internal.ExceptionConverterImpl.convert(ExceptionConverterImpl.java:164)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:670)
at org.hibernate.internal.AbstractSharedSessionContract.createQuery(AbstractSharedSessionContract.java:103)
将SELECT *
作为结果集的正确方法是什么?
发布于 2018-06-28 06:09:02
在HQL中,您不需要指定*
字符,实际上,除非您希望只返回查询的一部分,否则不需要指定select
。此外,您还需要特别引用实体名称。因此删除select *
并更新实体名称可以修复您的查询:
from TitleEntity where url = 'http://google.com'
该错误指示第8列是罪魁祸首,这直接表明查询的*
字符。
参考:https://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/queryhql.html#queryhql-select
https://stackoverflow.com/questions/51072072
复制相似问题