在ManyToMany JPA上的INNER JOIN无法正常工作

时间:2012-06-25 12:28:49

标签: mysql jpa inner-join

我在Jboss 5.1中使用Hibernate EntityManager 3.4.0.GA。但是在我的mysql控制台中,查询似乎运行正常。我收到以下错误

sqlstate s0022 引起:javax.persistence.PersistenceException:org.hibernate.exception.SQLGrammarException:无法执行查询 引起:java.sql.SQLException:找不到列'代码'。

我有两个表,一个是具有字段id,代码,类型的Station,另一个是描述可能组合的manyToMany表

+------------+--------+--------+
| ID |       |  type  | code   |
+------------+--------+--------+
|      1     |   AP   |  LAX   |
|      2     |   AP   |  JFK   |
|      3     |   AP   |  LHR   |
|      4     |   AP   |  MAN   |
+------------+--------+--------+

+------------+--------+--------+
| depStationId | destStationId | 
+------------+--------+--------+
|      1     |       2         |
|      1     |       3         |
|      2     |       1         |
|      3     |       1         |
+------------+--------+--------+

我的原生查询是

select d.code as origin, a.code as destination from DepDest dd 
inner join STATIONS d on dd.depStationId=d.id  and d.type=?1 
inner join STATIONS a on dd.destStationId=a.id and a.type=?2

它似乎与查询中的双左joisn和相同的列名有关。我找到了这个亲戚,但仍然没有解决方法。

https://hibernate.onjira.com/browse/HHH-3988

任何人都可以建议解决方法 感谢

1 个答案:

答案 0 :(得分:0)

您是否尝试过进行子查询?

select d.code as origin, a.code as destination
from (
  select dd.destStationId, d.code DepDest dd
  inner join STATIONS d on dd.depStationId=d.id and d.type=?1) d
inner join STATIONS a on d.destStationId=a.id and a.type=?2