[Résolut][hibernate] ."CLASS": invalid identifier

."CLASS": invalid identifier [Résolut][hibernate] - Java - Programmation

Marsh Posté le 06-09-2006 à 13:41:28    

Hello,
 
 Je m'énerve un peu là... à chaque requête, hibernate ajoute un "where blabla.class=machin" et bien sûr je ne me suis pas amusé à ajouter une colonne class dans toutes les tables de ma base...
 
 J'ai du m*rder quelque part, mais je ne vois pas où
 
config :
 

Code :
  1. <hibernate-configuration>
  2. <session-factory>
  3.         <property name="connection.driver_class">oracle.jdbc.driver.OracleDriver</property>
  4.         <property name="connection.url">jdbc:oracle:thin:@blablacbon</property>
  5.         <property name="connection.username">user</property>
  6.         <property name="connection.password">pass</property>
  7.         <property name="show_sql">true</property>
  8.         <property name="dialect">net.sf.hibernate.dialect.Oracle9Dialect</property>
  9.         <property name="c3p0.min_size">5</property>
  10.         <property name="c3p0.max_size">20</property>
  11.         <property name="c3p0.timeout">1800</property>
  12.         <property name="c3p0.max_statements">50</property>
  13.         <mapping resource="mapping.hbm.xml"/>
  14.     </session-factory>
  15. </hibernate-configuration>


 
mapping :

Code :
  1. <class name="business.hibernate.HbSysteme" table="application">
  2.  <id name="id" column="id" type="int">
  3.   <generator class="net.sf.hibernate.id.TableHiLoGenerator">
  4.    <param name="table">uid_table</param>
  5.    <param name="column">next_hi</param>
  6.   </generator>
  7.  </id>
  8.  <discriminator/>
  9.  <property name="name" column="name" type="string" not-null="true" unique="true"/>
  10.  <subclass name="business.systeme.Systeme"/>
  11. </class>


 
requête : select o from Systeme o order by o.name
 
exception : 13:28:26,755 ERROR JDBCExceptionReporter.logExceptions():58 - ORA-00904: "HBSYSTEME0_"."CLASS": invalid identifier
 
 :cry: help


Message édité par Calahad le 06-09-2006 à 17:49:35
Reply

Marsh Posté le 06-09-2006 à 13:41:28   

Reply

Marsh Posté le 06-09-2006 à 14:55:55    

elles resemblent à quoi tes requêtes ? (dans ton code java)


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 06-09-2006 à 15:03:03    

Code :
  1. select o from Systeme o order by o.name


 
et en sortie ça donne ça :
 

Code :
  1. select systeme0_.id as id, systeme0_.name as name from APPLICATION systeme0_
  2. where systeme0_.class='business.systeme.Systeme'
  3. order by  systeme0_.name


Message édité par Calahad le 06-09-2006 à 15:07:35
Reply

Marsh Posté le 06-09-2006 à 15:30:43    

t'as pas mis de schema à ta classe. Je pense que ça vient de là.

Code :
  1. <class name="business.hibernate.HbSysteme" table="application" schema="TON_SCHEMA">


ou alors, dans ton hibernate.conf.xml

Code :
  1. <property name="default_schema">APP</property>


 
je pense.


Message édité par brisssou le 06-09-2006 à 15:31:03

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 06-09-2006 à 15:39:26    

Je viens d'essayer, c'est pas ça. Spécifier le schéma est utile quand tu travailles avec plusieurs schémas, s'il n'y en a qu'un, c'est pas nécessaire.
 
 :jap: Merci quand même ! Ca me rend fou ce truc... :fou:

Reply

Marsh Posté le 06-09-2006 à 16:20:58    

oui, en y refléchissant, ça peut pas être le schéma, puisque ça rajoute un attribut... d'habitue, j'attends le jeudi avant de dire de merde.
 
chui en avance cette semaine.


---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 06-09-2006 à 16:27:58    

Citation :


        <subclass name="business.systeme.Systeme"/>


 
s'marrant, c'est juste ce qu'il te rajoute dans ta requête et qui fait tout merder...
 
tu n'as pas de discriminant entre tes deux classes ?
 
parce que là effectivement, si tu ne mets pas de discriminat, il te faut un champs class avec le nom complet de ta ta classe d'objets.

Message cité 1 fois
Message édité par brisssou le 06-09-2006 à 16:29:06

---------------
HFR - Mes sujets pour Chrome - Firefox - vérifie les nouveaux posts des topics suivis/favoris
Reply

Marsh Posté le 06-09-2006 à 16:39:09    

brisssou a écrit :

Citation :


        <subclass name="business.systeme.Systeme"/>


 
s'marrant, c'est juste ce qu'il te rajoute dans ta requête et qui fait tout merder...
 
tu n'as pas de discriminant entre tes deux classes ?
 
parce que là effectivement, si tu ne mets pas de discriminat, il te faut un champs class avec le nom complet de ta ta classe d'objets.


 
En effet, mais le discriminator sert à spécifier la classe à instancier, aucun rapport avec l'ajout d'une colonne donc (il n'y a qu'une sous-classe, donc pas de soucis, j'ai mis un discriminator vide pour qu'il fasse pas chier à "la compil" ). J'ai quand même essayé sans sous classe, par acquit de conscience, en faisant directement appel à la classe définie :  
 

Code :
  1. <class name="business.hibernate.HbSysteme" table="APPLICATION">
  2.  <id name="id" column="id" type="int">
  3.   <generator class="net.sf.hibernate.id.TableHiLoGenerator">
  4.    <param name="table">uid_table</param>
  5.    <param name="column">next_hi</param>
  6.   </generator>
  7.  </id>
  8.  <property name="name" column="name" type="string" not-null="true" unique="true"/>
  9. </class>


 
Le problème reste entier, il me rajoute cette p*tain de colonne class...youpi  [:petrus75]
 
edit : t'inquiète pas pour les conneries, on en dit tous, c'est tellement toufu ces technos...


Message édité par Calahad le 06-09-2006 à 16:44:19
Reply

Marsh Posté le 06-09-2006 à 17:49:17    

Le problème est résolut, il s'agissait d'une mauvaise utilisation de la balise subclass. L'implémentation que j'en ai faite est valide pour une version antérieure d'hibernate (1.x).  
 
La version que j'utilise maintenant tolère cette utilisation, mais ça marche pas terrible...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed