Question

Je change ma base de données de PostgreSQL vers Oracle 11g. J'utilise hiberner 3.0 avec Java et Struts.

Tout fonctionne très bien avec PostgreSQL.

Je l'ai changé suivant dans le fichier 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>

Tout le reste est identique à ce qui était dans Postgresql.

J'utilise ojdbc5.jar

Maintenant, quand je lance ma page, il me donne l'erreur suivante.

ORA-00903: nom de table non valide

Quelqu'un peut-il me aider en ce qui concerne la question?

Merci.

Était-ce utile?

La solution

Il est plus probable un des deux cas:

  1. Vous connectez en tant qu'utilisateur autre que le propriétaire de la table et ne peut pas résoudre le nom.
  2. Il y a un problème avec la casse soit la référence au nom de la table dans le code ou son nom réel.

Si vous n'êtes pas le propriétaire de la table (mais qui ont des subventions pour y accéder!), Vous devrez soit avoir un synonyme Oracle qui se traduit par une référence à MYTABLE en THE_ACTUAL_OWNER.MYTABLE, ou faire référence à la qualification de schéma directement votre code.

Le second cas est moins probable, mais parfois des scripts de création de table pour créer les objets dans Oracle avec des guillemets doubles autour du nom de l'objet, ce qui permettra la création d'identifiant mixte cas - CREATE TABLE « myTable » va créer l'identificateur de cas mixte puis doit être référencée par la chaîne mixte cas.

Pour nous fournir davantage d'information, communiquer avec une sorte d'outil SQL ad hoc que le même utilisateur que votre application et afficher les résultats de:

propriétaire select table_name de all_tables où table_name = 'theNameOfTheTableOfinterest';

Autres conseils

dpbradley est probablement correct, mais je viens de croiser le problème suivant avec 11g et mise en veille prolongée:  - 11g Oracle vous permettra de définir une table avec un nom plus de 30 caractères  -. Cependant, vous ne pouvez pas référence en fait à cette table dans une instruction SQL parce que son nom est trop long

  • Mise en veille prolongée Générée automatiquement DDL ne semble pas soin ou avertir quand il génère le DDL
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top