2009-07-28 126 views
0

我正在将我的数据库从PostgreSQL改为Oracle 11g。我在Java和Struts中使用hibernate 3.0。oracle 11g休眠问题

一切工作正常与PostgreSQL。

我在hibernate.cfg.xml文件中更改了以下内容。

<property name="hibernate.connection.driver_class">oracle.jdbc.driver.OracleDriver</property> 
    <property name="hibernate.connection.password">mypassword</property> 
    <property name="hibernate.connection.url">jdbc:Oracle:thin:@192.168.1.1:1521/mydb</property> 
    <property name="hibernate.connection.username">my_user</property> 
    <property name="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</property> 

其他与Postgresql中的相同。

我使用ojdbc5.jar

现在,当我跑我的网页它给了我下面的错误。

ORA-00903:无效的表名

任何一个可以帮助我关于这件事?

谢谢。

回答

3

这两种情况最有可能的一个:

  1. 您正在连接的不是表的所有者以外的其他用户,不能解析名称。
  2. 在代码中的表名引用或​​其实际名称中存在区分大小写的问题。

如果您不是表的所有者(但有补助来访问它!),你要么需要有一个转换参考MYTABLE到THE_ACTUAL_OWNER.MYTABLE一个Oracle同义词,或参考架构限定符直接在你的代码中。

第二种情况发生的可能性较小,但有时表创建脚本将在oracle中使用双引号在对象名称周围创建对象,这将允许创建混合大小写标识符 - CREATE TABLE“myTable”将创建混合大小写标识符然后必须由混合大小写字符串引用。

为我们提供了进一步的信息,并带有某种特别的SQL工具相同的用户作为应用程序的连接,并张贴结果:

选择所有者,表名从ALL_TABLES在表格名=“theNameOfTheTableOfinterest” ;

4

dpbradley可能是正确的,但是,我只是碰到了下面的问题,11g和休眠: - 的Oracle 11g将让你定义一个表的名称大于30个字符 - 但是,你不能真正参考因为它的名字太长,所以在SQL语句中将该表放置到该表中。

  • Hibernate的自动生成的DDL似乎照顾没有或警告时,它产生的DDL