JPQL — queries entities. SQL — queries tables.
JPQL:
1@Query("SELECT u FROM User u WHERE u.name LIKE %:name%")2List<User> searchByName(@Param("name") String name);34@Query("SELECT u.name FROM User u WHERE u.age > :age")5List<String> findNamesByAge(@Param("age") int age);
SQL:
1SELECT * FROM users WHERE name LIKE '%Alice%'2SELECT u.name FROM users u JOIN orders o ON u.id = o.user_id
How it works:
Key difference:
Best practice: