sql >> データベース >  >> RDS >> Mysql

hibernate(springboot)で左結合とページネーションを使用してSQLネイティブクエリを記述します

    解決しました...

    クエリは次のようになる必要があります:

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

    クエリが次のようになっているときに、WHEREの近くの4行目でエラーが発生していました:

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

    これは、countQueryを追加しなかったためです。 @Queryへのパラメータ 注釈。

    助けてくれた皆さんに感謝します。

    他の誰かの惨めさを何時間も救うことを願っています。

    乾杯! :)




    1. wampのmysqlポート3306エラーを解決する方法は?

    2. SQLクエリを使用してデータベースに日付ではなく時間のみを保存する方法

    3. MySQLクエリが有効かどうかを判断する方法は?

    4. java.lang.ClassNotFoundException:com.mysql.jdbc.Driver(jreのライブラリ内)