首页 > 解决方案 > 如何在 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 *获得结果集的正确方法是什么?

标签: javahibernate

解决方案


在 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


推荐阅读