IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Hibernate Java Discussion :

saveOrUpdate refuse de sauver mon objet


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut saveOrUpdate refuse de sauver mon objet
    Salut,

    dans mon archi 3 tiers, j'ai décidé d'utiliser saveOrUpdate mais il me répète sans cesse :

    javax.servlet.ServletException: this instance does not yet exist as a row in the database

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    	  public static Entry addEntry(Entry entry, User user) throws Exception{
    		  	Session session = HibernateUtil.currentSession();		  	
     
    		  	entry.setOrgId( user.getOrgid());		
    		  	Transaction tx = null;		  	
     
    	  	 	try
    	        {
    	            tx = session.beginTransaction();
    	            session.saveOrUpdate(entry);           
    	            tx.commit();
     
    	            session.flush();
    	  		    HibernateUtil.closeSession();	            	            
    	        }
    	        catch (Exception e)
    	        {
    	            if (tx != null){
    	                tx.rollback();
    	                session.refresh(entry);
    	      		    HibernateUtil.closeSession();	                
    	            }	
     
    	            throw e;
    	        }		  		        
     
    	        return(entry);
     
    	  }
    comment est-ce possible ?

  2. #2
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Peux-tu montrer le mapping de l'objet Entry ?

    A+
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Voici la derniere version mais j'ai essayé des versions différentes qui n'ont pas plus marché.
    A priori je dirais que c'est le paramètre cascade mais je ne suis pas sur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC
    	"-//Hibernate/Hibernate Mapping DTD//EN"
    	"http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd" >
     
    <hibernate-mapping package="com.capa.hibernate">
    	<class
    		name="Entry"
    		table="entry"
    	>
    		<meta attribute="sync-DAO">false</meta>
     
    		<id
    			name="Id"
    			type="integer"
    			column="entid"
    		>
    			<generator class="increment"/>
    		</id>
     
    		<property
    			name="Code"
    			column="code"
    			type="integer"
    			not-null="true"
    			length="10"
    		/>
    		<property
    			name="Amount"
    			column="amount"
    			type="float"
    			not-null="true"
    			length="8"
    		/>
    		<property
    			name="Piece"
    			column="piece"
    			type="integer"
    			not-null="false"
    			length="11"
    		/>
    		<property
    			name="Date"
    			column="date"
    			type="date"
    			not-null="true"
    			length="10"
    		/>
    		<property
    			name="Datets"
    			column="datets"
    			type="timestamp"
    			not-null="false"
    			length="19"
    		/>
    		<property
    			name="Label"
    			column="label"
    			type="string"
    			not-null="true"
    			length="255"
    		/>
    		<property
    			name="Type"
    			column="type"
    			type="string"
    			not-null="true"
    			length="1"
    		/>
    		<property
    			name="Mode"
    			column="mode"
    			type="integer"
    			not-null="true"
    			length="11"
    		/>
    		<property
    			name="Ident"
    			column="ident"
    			type="string"
    			not-null="false"
    			length="20"
    		/>
    		<property
    			name="State"
    			column="state"
    			type="java.lang.Byte"
    			not-null="true"
    			length="3"
    		/>
    		<property
    			name="Accid"
    			column="accid"
    			type="integer"
    			not-null="true"
    			length="11"
    		/>		
    		<property
    			name="Prjid"
    			column="prjid"			
    			type="integer"
    			not-null="true"
    			length="11"
    		/>
     
     
    		<many-to-one
    			name="OrgId"
    			column="orgid"
    			class="Organisation"
    			not-null="true"			
    			update="false" 
    			insert="true" 
    			fetch="join"				
    		>
    		</many-to-one>
     
    		<many-to-one
    			name="Usrid"
    			column="usrid"
    			class="User"
    			not-null="true"			
    			update="false" 
    			insert="true" 
    			fetch="join"				
    		>		
    		</many-to-one>
     
     
    	</class>	
    </hibernate-mapping>

  4. #4
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    Ca y est j'ai trouvé tu m'as mis sur la piste, j'ai oublié d'initialiser le userId de ma classe entity, je ne sais pas pourquoi il en a absolument besoin mais maintenant ca marche. J'ai lu la doc mais c'est pas tres clair, as-tu des infos sur l'interet de cascade.

  5. #5
    Modérateur
    Avatar de OButterlin
    Homme Profil pro
    Inscrit en
    Novembre 2006
    Messages
    7 313
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 7 313
    Billets dans le blog
    1
    Par défaut
    Et bien, cascade te permet de "cascader" les modifications au travers d'un objet de niveau supérieur.
    Exemple :
    Tu as un objet Groupe qui référence une liste d'Utilisateur.
    Tu ajoutes ou retires des Utilisateurs au groupe et tu sauvegardes le Groupe. Les modifications apportées à la table de relation (celle qui lie Groupe et Utilisateur) seront enregistrées de même qu'une ou plusieurs modifications d'un attribut de Utilisateur.
    C'est plus clair ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    957
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 957
    Par défaut
    J'ai compris en faite tu résonnes en Entité, Hibernate s'occupe complètement de la partie persistence. C'est super...

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/09/2006, 14h50
  2. [POO] Liste des variables de mon Objet
    Par hisy dans le forum Langage
    Réponses: 2
    Dernier message: 20/09/2006, 10h51
  3. Perte du pointeur à mon objet
    Par Maxou22 dans le forum C++
    Réponses: 1
    Dernier message: 11/03/2006, 05h42
  4. Réponses: 11
    Dernier message: 08/01/2006, 22h06
  5. [C#]Quand mon objet axWebBrowser est-il supprimé ?
    Par Kcirtap dans le forum Windows Forms
    Réponses: 5
    Dernier message: 18/10/2005, 10h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo