Bonjour,
J'ai une erreur sur une requete avec table d'association :
Classes java :
-------------------------------------------------------------------------------------
public class Commande {
private Long id;
private Set<Categorie> categories = new HashSet<Categorie>();
(...)
}
-------------------------------------------------------------------------------------
public class Categorie {
private Long id;
private Set<Commande> commandes = new HashSet<Commande>();
}
-------------------------------------------------------------------------------------
J'ai par ailleurs des classes générées par HibernateTools CmdCat et CmdCatId
Fichiers .hbm.xml (générés par HibernateTools)
-------------------------------------------------------------------------------------
<hibernate-mapping>
<class name="Commande" table="COMMANDE" lazy="true">
<id name="id" type="long">
<column name="ID" />
<generator class="native" />
</id>
<set name="categories" inverse="false" table="CMD_CAT">
<key>
<column name="CMD_ID" not-null="true" />
</key>
<many-to-many entity-name="Categorie">
<column name="CAT_ID" not-null="true" />
</many-to-many>
</set>
(...)
-------------------------------------------------------------------------------------
<hibernate-mapping>
<class name="Categorie" table="CATEGORIE" lazy="true">
<id name="id" type="long">
<column name="ID" />
<generator class="native" />
</id>
<set name="commandes" inverse="false" table="CMD_CAT">
<key>
<column name="CAT_ID" not-null="true" />
</key>
<many-to-many entity-name="Commande">
<column name="CMD_ID" not-null="true" />
</many-to-many>
</set>
(...)
-------------------------------------------------------------------------------------
<hibernate-mapping>
<class name="CmdCat" table="CMD_CAT">
<composite-id name="id" class="CmdCatId">
<key-property name="cmdId" type="long">
<column name="CMD_ID" />
</key-property>
<key-property name="catId" type="long">
<column name="CAT_ID" />
</key-property>
</composite-id>
</class>
</hibernate-mapping>
-------------------------------------------------------------------------------------
Lorsque je teste à l'execution pour retrouver une catégorie (et ses commandes), j'ai l'erreur :
org.hibernate.exception.SQLGrammarException: could not initialize a collection: [***.Categorie.commandes#9]
(...)
Caused by: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: Unknown column 'commandes0_.CAT_ID' in 'field list'
Et en effet, il n'y a par de colonne CAT_ID sur COMMABDE puisque c'est la table d'associaton qui fait le travail.
nb : mon DAO utilise : getHibernateTemplate().get(Categorie.class, id)
Où est l'erreur ?
Partager