JPQL无法连接表

时间:2017-04-12 14:28:59

标签: java sql spring hibernate jpql

你能帮我加入这些桌子吗?我的JPQL查询无法正常工作

@Query("Select bp, p from Perks as p, BokPerks as bp where bp.bookingID =:bookingID and bp.payment_id = p.id")
    List<Payment> getTEST(@Param("bookingId")long bookingID);

一个小时已经解决不了,也许是一个简单的错误,但我已经阻止了一点:) BokPerks实体表:

'131', NULL, '2'
'131', NULL, '3'
'132', NULL, '1'
'132', NULL, '2'
'132', NULL, '3'
'15', '1', '4'
'33', '2', '1'
'33', '2', '2'
'33', '2', '3'
'38', '3', '4'

特权表:

'1', 'lorem ipsum'
'2', '1234'
'3', 'hello '
'4', 'examples'

2 个答案:

答案 0 :(得分:3)

您的查询没有JOIN。应该是这样的

@Query("Select bp, p from Perks as p INNER JOIN p.BokPerks as bp where tbp.bookingID =:bookingID and tbp.payment_id = p.id")

我写了INNER JOIN p.BokPerks但实际上应该引用属性名称。没有实体类

,无法确切地说出语法

假设BokPerks具有perk引用属性。那么查询应该是

from  BokPerks as bp INNER JOIN bp.perk as p

答案 1 :(得分:1)

您可以在查询中看到您使用的是未知的tbp别名:

@Query("Select bp, p from Perks as p, BokPerks as bp where tbp.bookingID =:bookingID and tbp.payment_id = p.id")

你写了Select bp, p from Perks as p然后你写了where tbp.bookingID =:bookingID and tbp.payment_id = p.id

将其更改为:

@Query("Select bp, p from Perks as p, BokPerks as bp where bp.bookingID =:bookingID and bp.payment_id = p.id")