I am trying to get a sum from my DB with a query written in hibernate
@Query(value = "SELECT COALESCE(sum(charge),0) FROM initial_charge I INNER JOIN task T ON T.id = I.task_id "
+" INNER JOIN project_collab PC ON PC.collab_id=T.collaborator_id "
+ " INNER JOIN project P ON P.id = pc.project_id "
+ "where P.id = :idProject AND T.collaborator_id = :idCollab ", nativeQuery = true)
double sumInitialChargeByCollab(@Param("idProject") int idProject , @Param("idCollab") int idCollab);
The problem is, I get nothing in return. When I tried it directly in mysql I got this error :
ERROR 1054 (42S22): Unknown column 'pc.project_id' in 'on clause'
even though the column exists in the table
Advertisement
Answer
The query text cleared from external code dirt is:
SELECT COALESCE(sum(charge),0) FROM initial_charge I INNER JOIN task T ON T.id = I.task_id INNER JOIN project_collab PC ON PC.collab_id=T.collaborator_id INNER JOIN project P ON P.id = pc.project_id where P.id = :idProject AND T.collaborator_id = :idCollab
If case-dependence is enabled then PC and pc are two different names.
Convert ALL table/column/alias names to the same case (lower preferred).
PS. If charge (by the way, what table does this field come from?) is not nullable then COALESCE is excess.
