Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/326.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Hibernate HQL问题期望找到标识“*&引用;_Java_Sql_Hibernate - Fatal编程技术网

Java Hibernate HQL问题期望找到标识“*&引用;

Java Hibernate HQL问题期望找到标识“*&引用;,java,sql,hibernate,Java,Sql,Hibernate,我需要从相对表中获取所有数据,所以我使用了类似这样的方法(我会在sql中使用它) private static final String SELECT\u OOPR\u TO\u SEND=“SELECT R.*”+ “来自报价人项目R、报价人O、项目P”+ “其中P.id=R.project\u id和O.id=R.offer\u order\u id”+ “和O.type='ORDER'和(P.status='PENDING'或P.status='PROTECTED')”; ; @抑制警告

我需要从相对表中获取所有数据,所以我使用了类似这样的方法(我会在sql中使用它)

private static final String SELECT\u OOPR\u TO\u SEND=“SELECT R.*”+
“来自报价人项目R、报价人O、项目P”+
“其中P.id=R.project\u id和O.id=R.offer\u order\u id”+
“和O.type='ORDER'和(P.status='PENDING'或P.status='PROTECTED')”;
; 
@抑制警告(“未选中”)
公共列表findAllOfferOrderToSendToSalesmans(){
Query q=getSession().createQuery(选择要发送的对象);
List=q.List();
退货清单;
}
在启动此代码后,我得到一个错误:

org.hibernate.hql.internal.ast.QuerySyntaxException:应为标识, 在第1行第10列附近找到“*”[从OfferDerProjectRel中选择R R、 报价人O,项目P,其中P.id=R.project\u id和O.id= R.offer\u order\u id和O.type='order'和(P.status='PENDING'或 P.status='PROTECTED')]


那么,如何使用hibernate从R列获取所有数据呢?

您使用的是SQL查询,而不是hql查询,所以应该是

Query q = getSession().createSQLQuery(SELECT_OOPR_TO_SEND);
该方法需要一个HQL查询字符串

HQL是一种新的语言

HQL将
SELECT R.*
解释为选择对象
R
的成员字段
*

但是
*
不是
R
的成员字段。是吗

要选择
R
的所有成员字段,请使用:

选择R
来自报价人项目R、报价人O、项目P
其中P.id=R.project\u id和O.id=R.offer\u order\u id
和O.type='ORDER'和(P.status='PENDING'或P.status='PROTECTED')

对于在使用
org.springframework.data.jpa.repository.Query时收到“expecting Identit found”*”错误并发现此问题的人,我要补充一点,您可以将
nativeQuery
标志更改为
true

@Query(value = "SELECT * FROM table1", nativeQuery = true)
List<Object> myFindAll();
@Query(value=“SELECT*fromtable1”,nativeQuery=true)
列出myFindAll();

您是否只尝试了R而不是R*?请编辑查询以“从中选择R”。省略R.*这是HQL语法。HQL用于实体、字段和关联。从不使用表和列。它与SQL不同。如果是,它将被命名为SQL。阅读Hibernate文档。谢谢你们,是的,我必须阅读文档,我的错。谢谢使用EntityManager时,如何使用getSession()?您不使用getSession()。您需要的是SessionFactory而不是EntityManager
@Query(value = "SELECT * FROM table1", nativeQuery = true)
List<Object> myFindAll();