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 *
获得结果集的正确方法是什么?
解决方案
在 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
推荐阅读
- react-native - react-native-popup-menu :错误:(0,_react2.createContext)不是函数
- c# - c# 将数据从excel发送到SQL数据库
- javascript - React - 使用 setState 更新状态中的对象数组
- postgresql - PostgreSQL SELECT 和 REPLACE 多个字符串到单个列中
- c# - 如何在没有 xmlns 的情况下将文档序列化为 XML
- ios - UITableView - 主标题和节标题之间的间隙
- sql - 在 SQL 请求中进行比较
- c# - 使用c#的sqldatareader中的IndexOutOfRange异常
- tsql - TSQL 太奇怪了,除法在选择中不起作用(但 * - + 工作正常),但仅适用于一列
- r - 计算外部数据框中的行数