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 :

Utiliser Hibernate sans clé primaire


Sujet :

Hibernate Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut Utiliser Hibernate sans clé primaire
    Bonjour,

    je reviens sur un souci que j'ai eu :

    http://www.developpez.net/forums/d98...classeid-java/

    En effet, je ne peux pas toucher à la structure de ma base mais du coup, lors de l'application du reverse Engeneering pour la creation des beans...j'ai deux classe table.java et tableId.java (voir lien ci dessus)...

    Comment je peux les utiliser ,j'ai essaye de tripatouiller mon code...mais je n'arrive a rien...

    Y'a t'il une solution autre qu'hibernate pour pouvoir utiliser des tables sans clés primaires ?

    Merci d'avance...

  2. #2
    Rédacteur

    Homme Profil pro
    Geek entrepreneur
    Inscrit en
    Novembre 2004
    Messages
    1 224
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Geek entrepreneur

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 224
    Par défaut
    Une base de données relationnelle "doit" avoir un moyen d'identifier de facon unique un enregistrement dans une table. Si tu n'as pas d'ID tu dois au moins avoir un ensemble de colonne qui identifient de facon unique une ligne. Il faut donc utiliser une clé composite :

    http://docs.jboss.org/hibernate/core...on-compositeid

  3. #3
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    Merci pour la réponse ...

    Donc oui , je comprends l'idée,

    Mais , du coup , je fais mon reverse engeneering et je modifie mon code apres ???

    Aurais - tu un petit exemple ??

    Merci,

  4. #4
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    je suppose que les classe "tableID.java" créées servent justement à utiliser ces clés composite ???

  5. #5
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    Après vérification,

    c'est bien ça, les tablesId.java....représentent les clés composite,

    Hibernate les fabrique tout seul...comme un grand....

    Et dans mon fichier.hbm je l'ai sous cette forme :
    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
     
    <hibernate-mapping>
        <class name="termeBean.Terme" table="terme" schema="public">
            <composite-id name="id" class="termeBean.TermeId">
                <key-property name="idTerme" type="java.lang.Integer">
                    <column name="id_terme" />
                </key-property>
                <key-property name="idLangue" type="java.lang.String">
                    <column name="id_langue" length="3" />
                </key-property>
                <key-property name="idThesaurus" type="java.lang.Integer">
                    <column name="id_thesaurus" />
                </key-property>
                <key-property name="descripteur" type="java.lang.String">
                    <column name="descripteur" />
                </key-property>
                <key-property name="noteApplication" type="java.lang.String">
                    <column name="note_application" />
                </key-property>
                <key-property name="noteHistorique" type="java.lang.String">
                    <column name="note_historique" />
                </key-property>
                <key-property name="dateCreation" type="java.util.Date">
                    <column name="date_creation" length="13" />
                </key-property>
                <key-property name="dateModification" type="java.util.Date">
                    <column name="date_modification" length="13" />
                </key-property>
                <key-property name="type" type="java.lang.String">
                    <column name="type" length="2" />
                </key-property>
                <key-property name="idMt" type="java.lang.Integer">
                    <column name="id_mt" />
                </key-property>
            </composite-id>
        </class>
    </hibernate-mapping>
    J'ai bien compris ????

  6. #6
    Membre confirmé
    Homme Profil pro
    Développeur Java
    Inscrit en
    Octobre 2010
    Messages
    98
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Octobre 2010
    Messages : 98
    Par défaut
    Bon on va dire que oui....

    Donc maintenat que j'ai tout ca :

    ma classe Thesaurus.java, ma classe ThesaurusId.java et ma classe ThesaurusDAO.java.....(je vous passe les Abstract..)...

    Comment je les utilise ???

    En fait, je veux faire appel à ma méthode findAll() de ma classe ThesaurusDAO.java....


    Exemple :
    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
     
    public ActionForward execute(ActionMapping mapping, ActionForm form,
    			HttpServletRequest request, HttpServletResponse response) {
     
    		ThesaurusId theso = new ThesaurusId();
    		Thesaurus thesoList = new Thesaurus(theso);
     
     
    		ThesaurusDAO daoTheso = new ThesaurusDAO();
     
    		thesoList = daoTheso.findAll();
     
    		request.setAttribute("afficherTheso", theso);
     
    		return mapping.findForward("success");
    	}

    Ce code fonctionne pas , mais je cherche a faire quelque chose comme ca.....

    voila mes classes :

    AbstractThesaurus.java :
    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
     
     
    public abstract class AbstractThesaurus implements java.io.Serializable {
     
    	// Fields
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private ThesaurusId id;
     
    	// Constructors
     
    	/** default constructor */
    	public AbstractThesaurus() {
    	}
     
    	/** full constructor */
    	public AbstractThesaurus(ThesaurusId id) {
    		this.id = id;
    	}
     
    	// Property accessors
     
    	public ThesaurusId getId() {
    		return this.id;
    	}
     
    	public void setId(ThesaurusId id) {
    		this.id = id;
    	}
     
    }
    AbstractThesaurusId.java :
    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
     
    public abstract class AbstractThesaurusId implements java.io.Serializable {
     
    	// Fields
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private Integer idThesaurus;
    	private String idLangue;
    	private String description;
     
    	// Constructors
     
    	/** default constructor */
    	public AbstractThesaurusId() {
    	}
     
    	/** minimal constructor */
    	public AbstractThesaurusId(Integer idThesaurus) {
    		this.idThesaurus = idThesaurus;
    	}
     
    	/** full constructor */
    	public AbstractThesaurusId(Integer idThesaurus, String idLangue,
    			String description) {
    		this.idThesaurus = idThesaurus;
    		this.idLangue = idLangue;
    		this.description = description;
    	}
     
    	// Property accessors
     
    	public Integer getIdThesaurus() {
    		return this.idThesaurus;
    	}
     
    	public void setIdThesaurus(Integer idThesaurus) {
    		this.idThesaurus = idThesaurus;
    	}
     
    	public String getIdLangue() {
    		return this.idLangue;
    	}
     
    	public void setIdLangue(String idLangue) {
    		this.idLangue = idLangue;
    	}
     
    	public String getDescription() {
    		return this.description;
    	}
     
    	public void setDescription(String description) {
    		this.description = description;
    	}
     
    	public boolean equals(Object other) {
    		if ((this == other))
    			return true;
    		if ((other == null))
    			return false;
    		if (!(other instanceof AbstractThesaurusId))
    			return false;
    		AbstractThesaurusId castOther = (AbstractThesaurusId) other;
     
    		return ((this.getIdThesaurus() == castOther.getIdThesaurus()) || (this
    				.getIdThesaurus() != null
    				&& castOther.getIdThesaurus() != null && this.getIdThesaurus()
    				.equals(castOther.getIdThesaurus())))
    				&& ((this.getIdLangue() == castOther.getIdLangue()) || (this
    						.getIdLangue() != null
    						&& castOther.getIdLangue() != null && this
    						.getIdLangue().equals(castOther.getIdLangue())))
    				&& ((this.getDescription() == castOther.getDescription()) || (this
    						.getDescription() != null
    						&& castOther.getDescription() != null && this
    						.getDescription().equals(castOther.getDescription())));
    	}
     
    	public int hashCode() {
    		int result = 17;
     
    		result = 37
    				* result
    				+ (getIdThesaurus() == null ? 0 : this.getIdThesaurus()
    						.hashCode());
    		result = 37 * result
    				+ (getIdLangue() == null ? 0 : this.getIdLangue().hashCode());
    		result = 37
    				* result
    				+ (getDescription() == null ? 0 : this.getDescription()
    						.hashCode());
    		return result;
    	}
     
    }
    Comment puis- je faire ????

    Merci d'avance pour vos explications.

Discussions similaires

  1. Réponses: 0
    Dernier message: 11/05/2015, 21h00
  2. Puis-je utiliser une table sans clé primaire?
    Par laomaotou dans le forum Zend Framework
    Réponses: 4
    Dernier message: 04/10/2011, 15h39
  3. [SWT] utiliser SWT sans eclipse
    Par miel_pops dans le forum SWT/JFace
    Réponses: 4
    Dernier message: 24/01/2009, 20h48
  4. Hibernate sans clé primaire
    Par enok37 dans le forum Hibernate
    Réponses: 10
    Dernier message: 14/09/2007, 12h39
  5. [Hibernate] Mapper une table sans clé primaire
    Par neuromencien dans le forum Hibernate
    Réponses: 4
    Dernier message: 13/06/2006, 17h05

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