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 :

Merge renvoi des id null


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Par défaut Merge renvoi des id null
    Quand je fais un merge sur un objet avec un Id simple pas de soucis (l objet n existe pas en DB et n est pas deja attache). Generator=assigned

    Les memes conditions avec un composite-id me renvoi un objet aux ids=null

    Pourquoi ?

  2. #2
    Modérateur
    Avatar de paissad
    Homme Profil pro
    Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Inscrit en
    Avril 2006
    Messages
    1 043
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur de développement (Java/JEE/Eclipse RCP,EMF & webMethods)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 043
    Par défaut
    Bonjour,
    faut montrer un peu de code.

    Cordialement,
    Nous n'héritons pas de la terre de nos parents, nous l'empruntons à nos enfants.
    Le chat du site est aussi ici pour aider. Ne pas hésiter à visiter !

  3. #3
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Par défaut
    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
     
    <?xml version="1.0"?>
    <!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
                                       "http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
    <!-- Generated May 10, 2011 1:14:11 PM by Hibernate Tools 3.4.0.CR1 -->
    <hibernate-mapping>
    	<class name="com.amadeus.sep.lsr.refautomation.reference_bo.CityName"
    		table="TP_CityName">
     
    		<composite-id>
    			<key-property name="languageCode" column="LanguageCode" type="java.lang.String"></key-property>
    			<key-property name="cityCode" column="CityCode" type="java.lang.String"></key-property>
    			<generator class="assigned"></generator>
    		</composite-id>
     
    		<property column="CityName" generated="never"
    			lazy="false" name="cityName" />
     
    	</class>
    </hibernate-mapping>
    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
     
     
    public class CityName extends Entity implements Serializable{
     
    	/**
             * 
             */
    	private static final long serialVersionUID = -1053883640497293572L;
     
    	private String languageCode;
     
    	private String cityCode;
     
    	private String cityName;
     
    	//Internal usage
    	private Boolean isAirport;
     
    	//Internal usage
    	private String relatedCityCode;
     
    	public CityName(){
    		super.setIdFieldsName("cityCode","languageCode");
    		super.setComparedFieldsName("cityName");
    	}
     
    	public String getRelatedCityCode() {
    		return relatedCityCode;
    	}
     
    	public void setRelatedCityCode(String relatedCityCode) {
    		this.relatedCityCode = relatedCityCode;
    	}
     
    	public Boolean getIsAirport() {
    		return isAirport;
    	}
     
    	public void setIsAirport(Boolean isAirport) {
    		this.isAirport = isAirport;
    	}
     
    	public String getLanguageCode() {
    		return languageCode;
    	}
     
    	public void setLanguageCode(String languageCode) {
    		this.languageCode = languageCode;
    	}
     
    	public String getCityCode() {
    		return cityCode;
    	}
     
    	public void setCityCode(String cityCode) {
    		this.cityCode = cityCode;
    	}
     
    	public String getCityName() {
    		return cityName;
    	}
     
    	public void setCityName(String cityName) {
    		this.cityName = cityName;
    	}
     
    	public String toString(){
    		return "CityName: "+cityCode+" - "+languageCode;
    	}
    }
    on niveau DAO (le merge pour des raisons de robustesse):
    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
     
    /**
             * Save or Update the entity
             */
    	public T makePersistent(T entity) throws HibernateException {
     
    		T mergedEntity=null;
    		try {
    			this.beginTransaction();
    			 mergedEntity=(T)this.openSession().merge(entity);
    			this.openSession().saveOrUpdate(mergedEntity);
    		} catch (HibernateException e) {
    			this.handleHibernateException(e);
    			throw e;
    		}
    		return entity;
    	}
    L'objet mergedEntity a des valeurs de Id null pour le composite ci dessus décrit

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    et il avait un id avant le merge?

  5. #5
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Par défaut
    oui oui, il y a bien un id avant le merge

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Août 2006
    Messages
    3 276
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 3 276
    Par défaut
    Je ne vois pas trop l'utilité du merge suivi du saveorupdate...
    Et en plus dans une session différente ? Puisque tu as deux openSession consécutifs...

Discussions similaires

  1. somme des champs null
    Par s.rais dans le forum Access
    Réponses: 4
    Dernier message: 09/02/2006, 09h05
  2. [C#] [WinForms] Renvoi des erreurs...
    Par omlip dans le forum Windows Forms
    Réponses: 7
    Dernier message: 08/12/2004, 17h12
  3. requette qui renvoi des ligne double
    Par fehmitn dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 13/09/2004, 22h36
  4. [html:text][indexed]Valeurs des liste null...
    Par thibaut dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 08/09/2004, 09h36
  5. Réponses: 5
    Dernier message: 11/12/2003, 14h45

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