Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.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
Sql HQL Join-需要加入的路径!冬眠_Sql_Hibernate_Hql - Fatal编程技术网

Sql HQL Join-需要加入的路径!冬眠

Sql HQL Join-需要加入的路径!冬眠,sql,hibernate,hql,Sql,Hibernate,Hql,我刚开始休眠,遇到了以下问题: 当我尝试运行此查询时,出现“预期加入的路径!”异常: String hql=“从机票中选择平均价格(t.price)加入航班f,其中f.number=”+航班号+”; Query Query=this.session.createQuery(hql); List=query.List(); 我想选择一个给定航班已售出机票的平均价格 我已经检查了这些链接,但没有解决我的问题: 我的代码是: Flight.hbm.xml Ticket.hbm.xml 没有

我刚开始休眠,遇到了以下问题: 当我尝试运行此查询时,出现“预期加入的路径!”异常:

String hql=“从机票中选择平均价格(t.price)加入航班f,其中f.number=”+航班号+”;
Query Query=this.session.createQuery(hql);
List=query.List();
我想选择一个给定航班已售出机票的平均价格

我已经检查了这些链接,但没有解决我的问题:

我的代码是:

Flight.hbm.xml


Ticket.hbm.xml


没有JOIN的所有其他查询都可以正常工作。我不知道问题出在哪里


正确的查询是:

从机票t中选择平均价格(t.price)加入t.flight f,其中f.number=:flightNumber
连同查询执行:

Transaction tx=session.beginTransaction();
String hql=“从机票t中选择平均价格(t.price)加入t.flight f,其中f.number=:flightNumber”;
Query Query=this.session.createQuery(hql).setString(“flightNumber”,flightNumber);
List=query.List();
tx.commit();

如您链接到的问题和中所述,连接使用实体之间的关联。因此,正确的查询是

select avg(t.price) from Ticket t join t.flight f where f.number = :flightNumber

还请注意,使用参数比在查询中直接连接值要好得多。它自动处理报价和转义,并且没有任何HQL注入的风险。

谢谢。这解决了我的问题。正确的查询实际上是“从Ticket t join t.flight f中选择平均价格(t.price),其中f.number=:flightNumber”Oops。对我修正了答案。在这种情况下,内部连接是可选的,因此可以用更可读的形式编写:
从Ticket t中选择svg(t.price),其中t.flight.number=:flightNumber