PostgreSQL jest zgodny ze standardem SQL iw tym przypadku oznacza to, że identyfikatory (nazwy tabel, nazwy kolumn itp.) muszą być pisane małymi literami, chyba że są cytowane. Więc kiedy tworzysz taką tabelę:
CREATE TABLE APP_USER ...
faktycznie otrzymujesz tabelę app_user
. Najwyraźniej:
CREATE TABLE "APP_USER" ...
a potem otrzymujesz tabelę "APP_USER"
.
W Spring podajesz zwykły ciąg dla nazwy tabeli, pisany wielkimi literami, ale jest on wplatany w zapytanie do serwera PostgreSQL bez cudzysłowów. Możesz to sprawdzić, czytając pliki dziennika PostgreSQL:powinny one pokazywać zapytanie wygenerowane przez Spring, a następnie błąd u góry wiadomości.
Ponieważ masz bardzo małą kontrolę nad tym, jak Spring konstruuje zapytania z encji, lepiej jest używać standardowych identyfikatorów SQL zawierających małe litery.