oracle 11g hibernate问题

时间:2009-07-28 10:38:06

标签: oracle hibernate oracle11g

我正在将我的数据库从PostgreSQL更改为Oracle 11g。我正在使用带有Java和Struts的hibernate 3.0。

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:表名无效

任何人都可以帮我解决这个问题吗?

感谢。

2 个答案:

答案 0 :(得分:4)

dpbradley可能是正确的,但是,我刚刚遇到了11g和hibernate的以下问题:   - oracle 11g将允许您定义名称大于30个字符的表   - 但是,您实际上无法在SQL语句中引用该表,因为它的名称太长了。

  • Hibernate自动生成的DDL在生成DDL时似乎不在乎或发出警告

答案 1 :(得分:3)

这很可能是两种情况之一:

  1. 您要以表格所有者以外的用户身份进行连接,但无法解析名称。
  2. 在代码中对表名的引用或其实际名称中存在区分大小写的问题。
  3. 如果您不是该表的所有者(但有权访问它!),您需要具有Oracle同义词,将对MYTABLE的引用转换为THE_ACTUAL_OWNER.MYTABLE,或者直接引用模式限定符你的代码。

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

    要向我们提供更多信息,请使用某种特殊的SQL工具作为与您的应用程序相同的用户进行连接,并发布以下结果:

    从all_tables中选择所有者,table_name,其中table_name ='theNameOfTheTableOfinterest';