PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

PSQLException:nazwa kolumny clazz_ nie została znaleziona w tym zestawie wyników

W przypadku @Inheritance(strategy = InheritanceType.JOINED) , gdy pobierasz dane bez nativeQuery=True w repozytorium JPA , Hibernacja wykona SQL w następujący sposób:

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

Z powyższego kodu SQL możesz zobaczyć clazz specyfikacja. Jeśli chcesz zmapować ResultSet do superinstancji (PlaceEntity), należy określić clazz_ kolumna w SELECT samodzielnie.

W twoim przypadku będzie to:

@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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak GRUPOWAĆ WEDŁUG daty z polem znacznika czasu w Postgresie?

  2. Błąd:EXDEV:niedozwolone łącze między urządzeniami, zmień nazwę „/tmp/ na Ubuntu 16.04 LTS

  3. Zmiana typu danych na zmiennoprzecinkowe i zaokrąglanie do 2 cyfr dziesiętnych

  4. Wyzwalacz z dynamiczną nazwą pola

  5. Wiele-do-wielu w sqlalchemii. Zapobieganie wstawianiu SQLAlchemy do tabeli, jeśli tag już istnieje