Oracle 11g problema ibernazione
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.
Soluzione
E 'molto probabilmente uno dei due casi:
- Ci si connette come un utente diverso dal proprietario della tabella e non può risolvere il nome.
- 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