Эта проблема, скорее всего, связана с тем, что в объявлениях имен и именах таблиц смешаны регистры. Для меня Oracle (около 11,2, если я правильно помню ...) всегда создает все имена таблиц и столбцов UPPERCASE. Ваш сценарий создания может фактически равняться:
CREATE TABLE ITEMS (
ID INTEGER NOT NULL,
GROUPID INTEGER NOT NULL,
ITEMID INTEGER NOT NULL,
EXPIRES NUMBER(9,2)
)
Вы можете форсировать свой собственный случай, заключая имена в "
при создании таблиц, например:
CREATE TABLE "Items" ... -- and all the rest columns
Так что на самом деле вы можете иметь, например, таблицы Items
& ITEMS
одновременно. (У меня фактически была такая же проблема и с Postgres, который по умолчанию использует все имена в нижнем регистре) .
В любом случае : сначала проверьте, действительно ли ваши поля находятся в базе данных.
Если ваша таблица действительно имеет имена столбцов, такие как GroupId
, тогда вы можете попытаться «экранировать» имя в аннотации с помощью "
, например:
@Column(name = "\"GroupId\"")
Если они по умолчанию UPPERCASE, попробуйте соответственно:
@Column(name = "GROUPID")
Примечание : это должно быть применено ко всем вашим полям с различным регистром.
Особая деталь заключается в том, что - по крайней мере для меня, а также, похоже, имеет место с вами и Oracle - что JPA, тем не менее, находит таблицу независимо от имени, но затем поиск столбцов завершается неудачей.
В большинстве случаев лучшая практика заключается в том, чтобы сохранять вещи по умолчанию, если нет какой-то очень веской причины для отклонений. Поэтому, когда бы мы ни работали с Oracle, мы использовали UPPERCASE везде.