如何在Hibernate中获得结果集

时间:2018-06-27 22:05:42

标签: java 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 *作为结果集的正确方法是什么?

1 个答案:

答案 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