【发布时间】:2013-10-31 11:40:11
【问题描述】:
我需要从相关表中获取所有数据,所以我使用这样的东西(我会在 sql 中使用它)
private static final String SELECT_OOPR_TO_SEND = "SELECT R.* " +
"FROM offerOrderProjectRel R, offerOrder O, project P " +
"WHERE P.id = R.project_id and O.id = R.offer_order_id " +
"and O.type = 'ORDER' and (P.status = 'PENDING' or P.status ='PROTECTED')" ;
;
@SuppressWarnings("unchecked")
public List<OfferOrderProjectRel> findAllOfferOrderToSendToSalesmans() {
Query q = getSession().createQuery(SELECT_OOPR_TO_SEND);
List<OfferOrderProjectRel> list = q.list();
return list;
}
启动此代码后,我收到了该错误:
org.hibernate.hql.internal.ast.QuerySyntaxException:期待 IDENT, 在第 1 行第 10 列附近找到“**”[SELECT R.* FROM offerOrderProjectRel R, offerOrder O, 项目 P WHERE P.id = R.project_id 和 O.id = R.offer_order_id 和 O.type = 'ORDER' 和 (P.status = 'PENDING' 或 P.status ='PROTECTED')]
那么如何通过休眠获取列 R 中的所有数据?
【问题讨论】:
-
您是否尝试过仅使用 R 而不是 R.*?
-
将查询编辑为“从 R 中选择”。省略 R.* 这是 HQL 语法。
-
HQL 与实体、字段和关联一起工作。永远不要使用表格和列。它与 SQL 不同。如果是,它将被命名为 SQL。阅读 Hibernate 文档。
-
谢谢你们,是的,我必须阅读文档,我的错。谢谢!