Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Napisz natywne zapytanie sql z lewym sprzężeniem i stronicowaniem w trybie hibernacji (springboot)

rozwiązałem to...

Zapytanie musi wyglądać tak:

@Query(
        value = "SELECT * FROM \n" +
                "(institution INNER JOIN user ON institution.user_id = user.id) \n" +
                "LEFT JOIN \n" +
                "(SELECT * FROM \n" +
                "building_institutions \n" +
                "WHERE building_id = :userId)\n" +
                " AS reserved_institutions \n" +
                "ON reserved_institutions.institutions_user_id = kits_nwt.institution.user_id \n" +
                " where reserved_institutions.institutions_user_id IS null \n"
                + "ORDER BY ?#{#pageable}"
        ,
        countQuery = "SELECT count(*) FROM \n" +
                "(institution INNER JOIN user ON institution.user_id = user.id) \n" +
                "LEFT JOIN \n" +
                "(SELECT * FROM \n" +
                "building_institutions \n" +
                "WHERE building_id =:userId)\n" +
                " AS reserved_institutions \n" +
                "ON reserved_institutions.institutions_user_id = kits_nwt.institution.user_id \n" +
                "where reserved_institutions.institutions_user_id IS null \n" +
                "ORDER BY ?#{#pageable}",
        nativeQuery = true)
Page<Institution> findPotentialInstitutionsByBuildingId(@Param("userId") Long userId, Pageable pageable);

Dostałem błąd w wierszu 4 w pobliżu WHERE, kiedy moje zapytanie wyglądało tak:

@Query(
        value = "SELECT username, password, description, location, title, user_id FROM (institution INNER JOIN user ON institution.user_id = user.id) LEFT JOIN\n" +
                "(SELECT * FROM building_institutions WHERE building_institutions.building_id = 1) AS reserved_institutions\n" +
                "ON reserved_institutions.institutions_user_id = kits_nwt.institution.user_id\n" +
                "WHERE reserved_institutions.institutions_user_id IS null ORDER BY ?#{#pageable}",
        nativeQuery = true)
Page<Institution> findPotentialInstitutionsByBuildingId(Long userId, Pageable pageable);

a to dlatego, że nie dodałem countQuery parametr do @Query adnotacja.

Wielkie dzięki dla wszystkich, którzy próbowali pomóc.

Mam nadzieję, że oszczędzę komuś innemu wiele godzin nieszczęścia.

Twoje zdrowie! :)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nie można pobrać pliku binarnego w PHP

  2. Jak utworzyć tabelę mysql z domyślną sygnaturą czasową kolumny current_date?

  3. Utwórz tabelę w MySQL

  4. Zapisywanie obrazu w MySQL z Javy

  5. jak stworzyć dynamiczne menu z podmenu za pomocą php i mysql