[Hibernate] Problème de sauvegarde
Bonjour,
Je ne suis pas sur que ce post a sa place dans ce forum...
Bref, voila mon problème, (Je suis débutante)
Je fais un exemple tous simple sous eclipse pour comprendre comment utiliser la base, j'utilise toute les doc possibles mais là j'ai une erreur que je ne comprends pas.
J'ai créer un objet Person, avec un age, un nom, un parent, et une liste d'enfants.
(parent et enfants sont des personnes).
voila mon code XML :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC
"-//Hibernate/Hibernate Mapping DTD 2.0//EN"
"http://hibernate.sourceforge.net/hibernate-mapping-2.0.dtd">
<hibernate-mapping package="cma.core.element">
<class name="cma.core.element.Person" table="PERSON" discriminator-value="P">
<id name="id" column="uid" type="long" unsaved-value="null">
<generator class="hilo"/>
</id>
<property name="birthday" type="date"/>
...
<Component name="parent" class="cma.core.element.Person" column="uid">
</component>
<list name="children" table= "PERSON">
<key column="uid"/>
<index column="uid"/>
<composite-element class="cma.core.element.Person">
</composite-element>
</list>
</class>
</hibernate-mapping> |
et dans ce cas je ne voyais dans la base (via phpMyAdmin) que les types de base. children et parent n'apparaissaient pas.
Je me suis dis qu'il y avait du mieux, mais je ne suis pas vraiment sur d'avoir compris le rôle de la balise Component.
Voilà si qq'1 peut m'aider ...
Complément d'informations....
Voilà pour vérifier si le probleme venait de mes listes..
j'ai seulement définit dans ma classe Personn : nom, age... que des types de base.
Dans le fichier XML, j'ai aussi enlever les parties correspondantes, il ne reste plus que :
Code:
1 2 3 4 5 6 7 8 9 10 11
|
<class name="Person" table="PERSON" discriminator-value="P">
<id name="id" column="uid" type="long" unsaved-value="null">
<generator class="hilo"/>
</id>
<property name="birthday" type="date"/>
<property name="firstName" type="string"/>
<property name="lastName" type="string"/>
<property name="sex" type="int"/>
</class> |
Et pourtant j'ai toujours la même erreur :
Unknown entity: cma.core.element.Person
Je n'y connais pas grand chose du tout, mais c'est comme si on lui demandait de sauvegarder personne dans une base aui ne contient pas de table permettant de stoker la personne...
Code:
1 2
| Person person = new Person(parent, firstName, lastName, calendar.getTime(), sex);
savedOnDatabase(person); |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
private void savedOnDatabase(Object object) {
Session session = HibernateUtil.currentSession();
Transaction transaction = null;
try {
transaction = session.beginTransaction();
session.save(object);
transaction.commit();
baseTextArea.append("L'objet a bien été sauvegardé !");
} catch (HibernateException exception) {
baseTextArea.append(exception.getLocalizedMessage());
exception.printStackTrace();
} finally {
HibernateUtil.closeSession();
}
} |
et mes fichierx xml sont rajouté à ce niveau :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| private void createConfiguration() throws HibernateException {
configuration = new Configuration();
// Fichier de configuration (fichier xml).
configuration.configure(ParameterUI.createFile(ParameterUI.CONFIG_FILE));
// Fichiers de mapping (fichier xml).
configuration.addFile(ParameterUI.createFile(ParameterUI.FAMILY_HBM_FILE));
configuration.addFile(ParameterUI.createFile(ParameterUI.PERSON_HBM_FILE));
}
/**
* Crée les tables dans la base de données.
*/
private void createTableInDatabase() throws HibernateException {
new SchemaExport(configuration).create(false, true);
} |
alors vraiment si quelqu'un voit le pb, ou si je ne suis pas sur le bon forums prévenez moi....
merci d'avance