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

PSQLException:列名clazz_がこのResultSetに見つかりませんでした

    @Inheritance(strategy = InheritanceType.JOINED)の場合 、nativeQuery=Trueなしでデータを取得する場合 JPAリポジトリ休止状態 次のようにSQLを実行します:

    SELECT
    table0_.id as id1_1_,
    table0_.column2 as column2_2_1_,
    ... (main_table cols)
    table0_1_.column1 as column1_1_0_,
    ... (table1 to N-1 cols)
    table0_N_.column1 as column1_1_9_,
    ... (tableN-th cols)
    CASE WHEN table0_1_.id is not null then 1
        ... (table1 to N-1 cols)
        WHEN table0_N_.id is not null then N
        WHEN table0_.id is not null then 0
        END as clazz_
    FROM table table0_
    left outer join table1 table0_1_ on table0_.id=table0_1_.id
    ... (other tables join)
    left outer join table2 table0_N_ on table0_.id=table0_N_.id
    

    上記のSQLから、 clazzを確認できます。 仕様。 ResultSetをマッピングする場合 スーパーインスタンス(PlaceEntity)に、 clazz _を指定する必要があります SELECTの列 自分で。

    あなたの場合は次のようになります:

    @Query(value = "" +
                "SELECT *, 0 AS clazz_ " +
                "FROM place " +
                "WHERE earth_distance( " +
                "   ll_to_earth(place.latitude, place.longitude), " +
                "   ll_to_earth(:latitude, :longitude) " + 
                ") < :radius",
                nativeQuery = true)
    


    1. 不明なOIDが文字列として扱われるため、ActiveRecordとSQLが同じ結果を返さない状況

    2. Laravel5PDOExceptionがドライバーを見つけられませんでした

    3. Mysqlインデックスを使用したEntityFramework

    4. SQL Server2005DateAddを使用して日付に日を追加する