我正在尝试在休眠状态下执行以下操作:
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 *
作为结果集的正确方法是什么?
答案 0 :(得分:1)
在HQL中,您无需指定*
字符,实际上,您无需指定select
,除非您只想返回查询的一部分。另外,您需要专门引用实体名称。因此,删除select *
并更新实体名称可以解决您的查询:
from TitleEntity where url = 'http://google.com'
错误表明第八列是罪魁祸首,这直接表明查询的*
字符。
以供参考:https://docs.jboss.org/hibernate/orm/3.3/reference/en-US/html/queryhql.html#queryhql-select