我一直在尝试编写jpql
查询,但获得异常,
引起:org.hibernate.hql.internal.ast.QuerySyntaxException:意外令牌:*靠近第1行第8列[SELECT * FROM com.highpeak.tlp.datastore.model.TaskRequestModel trm inner join trm.task t inner join trm.task.matterId m inner join trm.task.matterId.client c其中trm.isActive为true且trm.task.isActive为true且trm.task.matterId.isActive为true且trm.task.matterId.client .isActive是真的trm.requestedFor =:所有者顺序由trm.createdAt DESC]
我的查询是
SELECT * FROM TaskRequestModel trm inner join trm.task t
inner join trm.task.matterId m inner join trm.task.matterId.client c
where trm.isActive is true and trm.task.isActive is true and
trm.task.matterId.isActive is true and
trm.task.matterId.client.isActive is true trm.requestedFor =:owner
order by trm.createdAt DESC"
可能是什么问题?
更新 我甚至试过
SELECT * FROM TaskRequestModel trm inner join trm.task t inner join
t.matterId m inner join m.client c where trm.isActive is true and
t.isActive is true and m.isActive is true and c.isActive is true and
trm.requestedFor =:owner order by trm.createdAt DESC
答案 0 :(得分:2)
我不确定is true
是否有效JPQL(它肯定不是有效的SQL)。所以你应该直接在WHERE
子句中断言列,如果它们是布尔值的话。除此之外,您还错过了AND
子句中的WHERE
。将所有这些放在一起,并删除不正确的GROUP BY
子句就可以了:
SELECT *
FROM TaskRequestModel trm
JOIN trm.task t
JOIN trm.task.matterId m
JOIN trm.task.matterId.client c
WHERE
trm.isActive AND
trm.task.isActive AND
trm.task.matterId.isActive AND
trm.task.matterId.client.isActive AND
trm.requestedFor =:owner
ORDER BY trm.createdAt DESC