Невозможно получить доступ к полю через hibernate в базе данных oracle в другом пользовательском пространстве только с избранными привилегиями - PullRequest
0 голосов
/ 30 июля 2011

Я пытаюсь использовать Hibernate для доступа к данным из другого пользовательского пространства (где у меня просто есть выбранные привилегии). У меня есть полное приложение, работающее с таблицами в моем пользовательском пространстве (поэтому конфигурации правильные). Когда я пытаюсь получить запись из разных В пользовательском пространстве я могу видеть размер списка. Однако не могу получить доступ к этой коллекции.

Также, когда запускается конфигурация гибернации, я вижу, как она пытается изменить и обновить, что я хотела бы остановить. Это oracle db. Я хотела бы знать, где я делаю Неправильно, из-за которого я просто получаю размер, но не фактические данные.

Jul 29, 2011 4:39:01 PM org.hibernate.tool.hbm2ddl.DatabaseMetadata getTableMetadata
INFO: table not found: INVENTORY.SWITCHDATA
SEVERE: Unsuccessful: create table INVENTORY.SWITCHDATA (SWITCH_ID number(19,0) not
 null, NAME varchar2(255), NPORTS number(10,0), NUSED number(10,0),     
VENDOR varchar2(255), STYPE varchar2(255), NET varchar2(255), primary key 
(SWITCH_ID))

Jul 29, 2011 4:39:01 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute

SEVERE: ORA-0: insufficient privileges

Jul 29, 2011 5:06:31 PM org.hibernate.tool.hbm2ddl.SchemaUpdate execute

INFO: schema update complete

Hibernate: select this_.SWITCHTYPE as y0_, this_.SWITCHTYPE as y1_ from 
INVENTORY.SWITCHDATA this_ group by this_.SType

100

Должен ли я сообщать об инвентаризации пространства пользователя каким-либо другим способом, после чего назовите мою таблицу «inventory.tablename», или я должен как-то сообщить о привилегиях для спящего режима.

1 Ответ

0 голосов
/ 30 июля 2011

Ошибка ORA-0: insufficient privileges объясняется тем, что при запуске hibernate он пытается создать и обновить таблицу базы данных, связанную с отображением (hbm-файлы).Это ошибка базы данных оракула, и вы должны попросить администратора базы данных предоставить привилегии alter create, drop и т. Д. Пользователю, который hibernate использует в файле конфигурации.

Если вы не хотите, чтобы Hibernate автоматически обновлял схему базы данных, вы можете проверить, что для свойств Hibernate.hbm2ddl.auto установлено значение validate в файле конфигурации Hibernate.Возможные значения этого свойства: validate |обновление |создать |создание-падение.Возможно, в вашем конфигурационном файле установлено значение update.Отключив автогенерацию схемы таблицы, вы сами создадите таблицу, индекс, ограничение и т. Д.

Вы можете сообщить hibernate об имени схемы для использования в файле конфигурации hibernate со свойством * 1009.* и в файле hbm.xml в элементе <Hibernate-mapping ...

Справочная документация

Hibernate.hbm2ddl.auto или Конфигурация Hibernate
Опция hbm2ddl.auto включает автоматическое создание схем базы данных непосредственно в базе данных.Это также можно отключить, удалив параметр конфигурации, или перенаправить в файл с помощью задачи Ant SchemaExport.

hibernate.default_schema
Квалифицировать неквалифицированные имена таблиц с заданной схемой / табличным пространством в сгенерированном SQL.egSCHEMA_NAME

5.1.2.Hibernate-mapping
Этот элемент имеет несколько необязательных атрибутов.Атрибуты схемы и каталога указывают, что таблицы, упомянутые в этом отображении, принадлежат указанной схеме и / или каталогу.Если они указаны, имена таблиц будут дополняться указанной схемой и именами каталогов.Если они отсутствуют, имена таблиц будут неквалифицированными.

...