我需要从相对表中获取所有数据,所以我使用了类似这样的方法(我将在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,在第一行附近找到'**‘,第10列从offerOrderProjectRel R、offerOrder O、项目P中选择R*,其中P.id = R.project_id和O.id = R.offer_order_id和O.type = 'ORDER’和(P.status =‘未决’或P.status =‘受保护’)。
那么,如何使用hibernate从列R获取所有数据呢?
发布于 2014-02-27 13:27:29
createQuery方法需要一个HQL查询字符串。
HQL是一个面向对象查询语言。
HQL将SELECT R.*解释为选择对象R的成员字段*。
但*不是R的成员字段。是吗.
要选择R的所有成员字段,请使用:
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')发布于 2013-10-22 22:28:25
您使用的是SQL查询,而不是hql查询,所以应该是
Query q = getSession().createSQLQuery(SELECT_OOPR_TO_SEND);发布于 2020-06-01 13:47:59
对于在使用org.springframework.data.jpa.repository.Query时收到“期望IDENT”*“错误”并发现这个问题的人,我将添加一个可以将nativeQuery标志更改为true的人
@Query(value = "SELECT * FROM table1", nativeQuery = true)
List<Object> myFindAll();https://stackoverflow.com/questions/19520628
复制相似问题