我有3个表代表3个这样的实体:
服务类:
Service
----------
- Long id (primary key)
- Collection<commandeLine> commandeLines (many to many)
- Date billingDate;
CommandLine类:
CommandLine
--------------
- Long id (primary key)
- Command (many to one)
- Collection<Service> services (many to many)
命令类:
Command
-------------
- Long id (primary key)
- Date date
- Collection<CommandLine> commandLines (one to many)
现在我在Service.java
上有一个命名查询,它会返回结算日期&gt;的所有服务。到它们所附加的至少一个命令的日期。所以(我猜)我必须使用2个内部联接来使用CommandLine
类,它具有到Command
类的实际链接。
我对NamedQueries所做的是:
@NamedQuery(name = "ServiceDateQuery", query = "SELECT s FROM Service s "
+ "INNER JOIN Command c WITH c.date > s.billingDate "
+ "INNER JOIN s.commandLines cl WITH cl.command = c.id") })
我收到错误:
org.hibernate.hql.ast.QuerySyntaxException: Path expected for join!
我想这并不是因为我没有从另一个实体链接到Command。但是我能做什么?如果我把s.CommandLines放在第一位,我就无法执行查询。
请帮忙吗?
答案 0 :(得分:0)
不是WITH,而是WHERE和查询结束时, jpa中的join将自动从类模型中解析出来:
SELECT s FROM Service s INNER JOIN s.comandelines cl INNER JOIN cl.comand c
WHERE c.date > s.billingDate