Bonjour,
Voila je débute avec hibernate, et j'ai un problème de mapping, et malgrés mes recherches je n'ai pas réussis à trouver de réponsecorrespondant à mon cas, pourtant simple.
J'ai 2 tables, Personne et Adresse,
Une relation uni-directionnelle : une personne a une adresse au maximum mais peu ne pas en avoir.
Mon but est que quand je sauvegarde/delete une personne, hibernate sauvegarde automatiquement l'adresse.
Mes fichier de mapping donne ca :
pour la personne :
Code:
<hibernate-mapping>
<class
name="fr.appli.persistance.dao.hibernate.PersonnePersistant"
table="Personne"
dynamic-update="false"
dynamic-insert="false"
>
property
name="nom"
type="java.lang.String"
update="true"
insert="true"
access="property"
column="NOM"
/>
property
name="prenom"
type="java.lang.String"
update="true"
insert="true"
access="property"
column="PRENOM"
/>
<many-to-one
name="adr"
class="fr.appli.persistance.dao.hibernate.AdressePersistant"
cascade="all"
outer-join="auto"
update="true"
insert="true"
access="property"
property-ref="idAdr"
column="IDADR"
/>
</class>
</hibernate-mapping>
pour l'adresse rien de spécial :
Code:
<?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>
<class
name="fr.appli.persistance.dao.hibernate.AdressePersistant"
table="ADRESSE"
dynamic-update="false"
dynamic-insert="false"
>
<id
name="idAdr"
column="IDADR"
type="java.lang.String"
>
<generator class="assigned">
</generator>
</id>
</class>
</hibernate-mapping>
Mon problème est que quand je lance jboss(3.2.5), après avoir déployé mon appli, ca plante(sans trace), et finalement je ne voit que les log4j d'erreur quand je veut fermer la session et qu il me sort :
Code:
java.lang.NoClassDefFoundError
at fr.appli.persistance.transaction.TransactionFacade.fermerSession(TransactionFacade.java:197)
Si j'enlève le:
Code:
property-ref="idAdr"
, hibernate tente d'insérer la personne avant l'adresse, ce qui lance une erreur (normal puisque l'id de l'adresse n'est pas encore en base).
Si je sauvegarde l'adresse avant la personne ca marche, mais j'aimerais faire la chose en une seule fois.
Si j'essaye un one-to-one, et que la personne n'a pas d'adresse, il met quand même la premiere adresse de ma table adresse dans mon objet PersonnePersistant.
Si vous aviez une idée merci.
Hibernate version:2.1.6
Name and version of the database you are using:Oracle9.2
JRE et IDE : 1.4.2, eclipse 3.0.1