sql >> Databáze >  >> RDS >> Mysql

Napište nativní dotaz SQL s levým spojením a stránkováním v režimu spánku (springboot)

Vyřešil jsem to...

Dotaz musí vypadat takto:

@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);

Zobrazovala se mi chyba na řádku 4 poblíž WHERE, když můj dotaz vypadal takto:

@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 proto, že jsem nepřidal countQuery parametr do @Query anotace.

Velké díky vám všem, kteří jste se snažili pomoci.

Doufám, že někomu jinému ušetřím mnoho hodin utrpení.

Na zdraví! :)




  1. Oracle PL/SQL:Příklad UTL_FILE.FCOPY

  2. Metoda ExecuteBatch vrací pole s hodnotou -2 v jazyce Java

  3. java.math.BigInteger nelze přetypovat na java.lang.Integer

  4. Vytvoření jednoho až mnoha polymorfních vztahů s doktrínou