Domanda

Sto cambiando il mio database da PostgreSQL a Oracle 11g. Sto usando Hibernate 3.0 con Java e Struts.

Tutto sta funzionando benissimo con PostgreSQL.

Ho cambiato seguente nel file di 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>

Tutto il resto è lo stesso che era in PostgreSQL.

Sto usando ojdbc5.jar

Ora, quando eseguo la mia pagina mi dà errore seguente.

ORA-00903: non valida nome della tabella

Può uno aiutarmi per quanto riguarda la questione?

Grazie.

È stato utile?

Soluzione

E 'molto probabilmente uno dei due casi:

  1. Ci si connette come un utente diverso dal proprietario della tabella e non può risolvere il nome.
  2. C'è un problema con la sensibilità caso sia il riferimento al nome della tabella nel codice o il suo nome attuale.

Se non sei il proprietario della tabella (ma hanno sovvenzioni per accedervi!), È necessario sia avere un sinonimo di Oracle che traduce un riferimento a MyTable in THE_ACTUAL_OWNER.MYTABLE, o fare riferimento il qualificatore dello schema direttamente in il vostro codice.

Il secondo caso è meno probabile, ma a volte script di creazione tabella creerà oggetti in Oracle con le doppie virgolette attorno al nome dell'oggetto, che permetteranno la creazione di mixed-case identificatore - CREATE TABLE "myTable" creerà l'identificatore di maiuscole e minuscole, che poi deve essere a cui fa riferimento la stringa mixed-case.

Per fornirci maggiori informazioni, collegarsi con una sorta di strumento ad hoc SQL come lo stesso utente come l'applicazione e inviare i risultati di:

Seleziona proprietario, table_name da ALL_TABLES dove table_name = 'theNameOfTheTableOfinterest';

Altri suggerimenti

dpbradley è probabilmente corretta, tuttavia, Ho appena incontrato il seguente problema con 11g e ibernazione:  - Oracle 11g vi permetterà di definire una tabella con un nome maggiore di 30 caratteri  -. Tuttavia, non si può in realtà riferimento a quella tabella in un'istruzione SQL perché il suo nome è troppo lungo

  • Sospensione automatica generato DDL non sembra cura o avvertire quando si genera il DDL
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top