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 :

hibernate et le cache


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Par défaut hibernate et le cache
    bonjour
    j'ai un petit souci avec le cache d'hibernate (enfin je pense), je réalise une application web (struts 1.2.9),
    je fais des traitements (insertion, update ...)
    en BDD tout est nickel par contre quand je veux afficher les enregistrements modifiés lors de ma session j'ai pas toutes les informations.
    par exemple ma table c'est
    incident(id, title, description, solution, ...., typeId, stateId, levelId)
    avec typeId, stateId et levelId des clés étrangères vers d'autres tables.

    si j'affiche un incident que je n'ai pas modifié tout est correctement affiché.
    par contre si j'affiche un incident que je viens de modifier, les attributs propres de la table (title, description, et solution) sont bien affichés mais les autres qui proviennent des autres tables(type, state et level) sont absents.

    j'ai essayé de chercher mais pas vraiment de solution, est ce que quelqu'un a une idée.
    Merci

  2. #2
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2009
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 4
    Par défaut
    Quand je rencontre ce genre de problème cela peut venir, d'un problème de LAZY/EAGER au niveau du loading des éléments enfants de l'objet,

    Il est difficile de répondre a ta question sans, la structure précise de ton (ou tes) objet impliqués, un exemple de code avec récupération, traitement, puis enregistrement qui fait que ça ne marche pas pourrait donner une bonne indication.

  3. #3
    Membre averti
    Inscrit en
    Juin 2008
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 36
    Par défaut
    avec un peu de retard, voici les exemples:
    ** Incidents.hbm.xml
    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
     
    <?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.XXX.mapping">
    	<class
    		name="Incidents"
    		table="Incidents"
    	>
    		<meta attribute="sync-DAO">false</meta>
    		<id
    			name="Id"
    			type="integer"
    			column="incident_id"
    		>
    			<generator class="increment"/>
    		</id>
     
     
    		<!-- foreign key : IncidentType -->
    		<many-to-one
    			name="IncidentTypeId"
    			class="IncidentsType"
    			column="incident_type_id"
    		/>
     
    		<!-- foreign key from User : assigned User -->
    		<many-to-one
    			name="AssignedUser"
    			class="User"
    			column="assigned_user"
    		/>
     
    		<!-- foreign key from User : creater User -->
    		<many-to-one
    			name="CreaterUser"			
    			class="User"
    			column="creater_user"
    		/>
     
    		<property
    			name="Title"
    			column="title"
    			type="string"
    			not-null="true"
    			length="45"
    		/>
     
     
    		<!-- foreign key from IncidentLevel -->
    		<many-to-one
    			name="IncidentLevelId"
    			class="IncidentLevel"
    			column="incident_level_id"
    		/>
     
    		<property
    			name="StartDate"
    			column="start_date"
    			type="date"
    			not-null="true"
    			length="10"
    		/>
    		<property
    			name="EndDate"
    			column="end_date"
    			type="date"
    			not-null="false"
    			length="10"
    		/>
     
    		<!-- foreign key from IncidentState -->
    		<many-to-one
    			name="IncidentStateId"
    			column="incident_state_id"
    			class="IncidentState"
    		/>
     
    		<property
    			name="Description"
    			column="description"
    			type="string"
    			not-null="true"
    		/>
    		<property
    			name="Solution"
    			column="solution"
    			type="string"
    			not-null="false"
    		/>
    	</class>	
    </hibernate-mapping>
    ** IncidentLevel.hbm.xml
    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
     
    <?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.XXX.mapping">
    	<class
    		name="IncidentLevel"
    		table="Incident_Level"
    		batch-size="50"
    		lazy="false"
    	>
    		<meta attribute="sync-DAO">false</meta>
    		<id
    			name="Id"
    			type="integer"
    			column="incident_level_id"
    		>
    			<generator class="increment"/>
    		</id>
     
    		<property
    			name="IncidentLevelTitle"
    			column="incident_level_title"
    			type="string"
    			not-null="true"
    			length="20"
    		/>
     
    	</class>	
    </hibernate-mapping>

    ** IncidentState.hbm.xml
    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
     
    <?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.XXX.mapping">
    	<class
    		name="IncidentState"
    		table="Incident_State"
    		batch-size="50"
    		lazy="false"
    	>
    		<meta attribute="sync-DAO">false</meta>
    		<id
    			name="Id"
    			type="integer"
    			column="incident_state_id"
    		>
    			<generator class="increment"/>
    		</id>
     
    		<property
    			name="IncidentStateTitle"
    			column="Incident_state_title"
    			type="string"
    			not-null="true"
    			length="20"
    		/>
    	</class>	
    </hibernate-mapping>

    *** IncidentType.hbm.xml
    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
     
    <?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.XXX.mapping">
    	<class
    		name="IncidentsType"
    		table="Incidents_Type"
    		batch-size="50"
    		lazy="false"
    	>
    		<meta attribute="sync-DAO">false</meta>
    		<id
    			name="Id"
    			type="integer"
    			column="incident_type_id"
    		>
    			<generator class="increment"/>
    		</id>
     
    		<property
    			name="Label"
    			column="label"
    			type="string"
    			not-null="true"
    			length="45"
    		/>
    	</class>	
    </hibernate-mapping>

    Et le cas qui me pose problème c'est le suivant:
    - j'ai la liste des incidents
    - je clique sur un, j'affiche tous les détails
    - j'édite l'incident
    - j'effectue des modifications ( Par exemple je modifie le champs Description)
    - je valide, en BDD tout c'est bien passé.
    - je retourne à ma liste d'incidents je clique sur celui que je viens de modifier pour l'afficher.
    - les attributs propres à la table sont affichés (titre, description, date) avec la nouvelle valeur.
    - par contre les attributs qui proviennent d'autres tables (type, level, state), ne sont même pas chargés.
    - j'arrete tomcat et je relance mon appli, je visualise le mm enregistrement, tout est chargé.


    voila j'espère avoir été clair

    Merci pour votre aide ça fait longtemps que je traine ce gros bug et j'ai essayé plein de trucs.

Discussions similaires

  1. Weblogic 8.1 + Hibernate : pb de cache
    Par Christophe P. dans le forum Weblogic
    Réponses: 1
    Dernier message: 17/01/2007, 14h01
  2. Weblogic 8.1 + Hibernate : pb de cache
    Par Christophe P. dans le forum Hibernate
    Réponses: 1
    Dernier message: 17/01/2007, 14h01
  3. Hibernate et le cache
    Par titeuf92 dans le forum Hibernate
    Réponses: 6
    Dernier message: 07/12/2006, 16h15
  4. [Hibernate] Gérer le cache L2
    Par mauvais_karma dans le forum Hibernate
    Réponses: 2
    Dernier message: 30/08/2005, 11h50
  5. [Hibernate]comprendre la cache sur hibernate
    Par ujoodha dans le forum Hibernate
    Réponses: 16
    Dernier message: 29/08/2005, 09h02

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