我有一个查询,我想通过持久化来执行。
final String StatusQuery = convertStringFiltersToQuery(StatusFilters);
sql = String.format("Select * FROM Program p LEFT JOIN p.user vt LEFT JOIN vt.Vendor LEFT JOIN p.Program WHERE vt.Status IN (%s) ORDER BY ID DESC",
StatusQuery);
entityManager.createNativeQuery(sql).getResultList();
但是当我尝试执行它时,我得到了如下错误
错误原因:错误:在“ORDER”或其附近有语法错误
我错过了什么吗?
提前感谢!!
更新问题后,从以下答案中获得建议:
现在已更改查询,但似乎发生了相同的问题:
sql = String.format("Select * FROM Program p LEFT JOIN p.user vt LEFT JOIN vt.Vendor LEFT JOIN p.Program on (p.program_id = p.UserProgram.program_id) WHERE vt.Status IN (%s) ORDER BY ID DESC",
错误原因:错误:在“ORDER”或其附近有语法错误
1条答案
按热度按时间qnakjoqk1#
看起来你需要一个join的条件。这些
syntax errors at or near 'x'
通常指向x
之前的一个错误,在这种情况下,LEFT JOIN没有ON子句。编辑:对问题更新的回应,您将需要每个
LEFT JOIN
子句的条件,这里有一个example和here。