我正在尝试使用Hibernate来访问来自不同用户空间的数据(我只有选择权限)。我有完整的应用程序在我的用户空间中运行表(所以配置是正确的)。当我尝试从不同的地方获取记录时用户空间,我能够看到列表的大小。但是无法访问该集合。
此外,当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'命名我的表,或者我必须以某种方式告知休眠权限。
答案 0 :(得分:0)
ORA-0: insufficient privileges
错误,因为当hibernate启动时,他尝试创建和更新与映射相关的数据库表(hbm文件)。这是一个oracle数据库错误,您应该要求DBA向配置文件中使用的hibernate用户授予alter create,drop等权限。
如果您不希望hibernate自动更新数据库模式,您可以检查hibernate配置文件中的属性Hibernate.hbm2ddl.auto
是否设置为validate
。此属性的可能值为:validate |更新|创建|创建降。也许它在配置文件中设置为update
。通过禁用表模式的自动生成,您将负责创建表,索引,约束等。
您可以在hibernate配置文件中使用属性hibernate.default_schema
和hbm.xml
元素中的<Hibernate-mapping ...
文件
参考文档
Hibernate.hbm2ddl.auto或Hibernate configuration
hbm2ddl.auto选项打开自动生成数据库 模式直接进入数据库。这也可以关闭 删除配置选项,或使用重定向到文件 SchemaExport Ant任务的帮助。hibernate.default_schema
使用给定的模式/表空间限定非限定表名 生成SQL。 e.g.SCHEMA_NAME5.1.2. Hibernate-mapping
该元素有几个可选属性。架构和目录 attributes指定此映射中引用的表属于 命名的架构和/或目录。如果指定了它们,则为表名 将由给定的架构和目录名称限定。如果它们是 缺少,桌面名称将不合格。