| J'utilise Hibernate sur des tables d'une base patrimoniale DB2/AS400 et je cherche à regrouper des données de plusieurs tables dans une classe.
Les clés primaires de ces tables sont basées sur plusieurs colonnes, d'où l'utilisation du composite-id.
 
 Est-il possible d'utiliser un des éléments du composite-id pour faire une jointure vers une table n'ayant pas les 2 éléments comme clé primaire?
 
 Pour être plus clair voici un exemple :
 Comment charger le libelle de SANAP10 sachant que le code de SAN7P10 : N7CPRD correspond au code de SANAP10 : NACPRG?
 
 
 Hibernate version: 3.0.2
 
 Mapping documents:
 <class name="mysql.test.MyClass" table="SAN7P10">
 
 <composite-id name="maPK" class="mysql.test.MyClassPK">
 <key-property name="code" column="N7CPRD" />
 
 <key-property name="id" column="N7NCON" />
 </composite-id>
 
 ...
 
 <join table="SANAP10" >
 <key column="NACPRG" />
 
 <property name="libelle" column="NALNPR" type="java.lang.String" />
 </join>
 
 Code between sessionFactory.openSession() and session.close():
 session.get(MyClass.class, myClassPK);
 
 Full stack trace of any exception that occurs:
 1) testFormula(mysql.test.MySQLTest)java.lang.ExceptionInInitializerError
 at mysql.test.MySQLTest.testFormula(MySQLTest.java:15)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at mysql.test.MySQLTest.main(MySQLTest.java:35)
 Caused by: java.lang.RuntimeException: Problème de configuration : Foreign key (codeProduit:SANAP10 [NACPRG])) must have same number of columns as the referenced primary key (SAN7P10 [N7CPRD,N7NCON])
 at mysql.test.HibernateUtil.<clinit>(HibernateUtil.java:16)
 ... 17 more
 Caused by: org.hibernate.MappingException: Foreign key (codeProduit:SANAP10 [NACPRG])) must have same number of columns as the referenced primary key (SAN7P10 [N7CPRD,N7NCON])
 at org.hibernate.mapping.ForeignKey.alignColumns(ForeignKey.java:86)
 at org.hibernate.mapping.ForeignKey.setReferencedTable(ForeignKey.java:51)
 at org.hibernate.cfg.Configuration.secondPassCompileForeignKeys(Configuration.java:953)
 at org.hibernate.cfg.Configuration.secondPassCompile(Configuration.java:898)
 at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1049)
 at mysql.test.HibernateUtil.<clinit>(HibernateUtil.java:14)
 ... 17 more
 
 Name and version of the database you are using:
 MySQL 4.1
 
 
 |