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

JPA Java Discussion :

clé primaire composé et persistence.xml


Sujet :

JPA Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2007
    Messages
    129
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 129
    Points : 52
    Points
    52
    Par défaut clé primaire composé et persistence.xml
    Bonjour à tous

    J'ai dans mon projet une table qui possède une clé primaire composé de 2 champs.

    class : DatasetLocus

    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
     
     
    package sagacity.entity;
     
    import java.io.Serializable;
     
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.IdClass;
     
    @Entity
    @IdClass(DatasetLocusPk.class)
    public class DatasetLocus implements Serializable{
     
     
    	private static final long serialVersionUID = 1L;
     
    	@Id
    	private long dataset_id;
    	@Id
    	private String locusId;
     
    	/*getters setters*/
     
    	public long getDataset_id() {
    		return dataset_id;
    	}
    	public void setDataset_id(long dataset_id) {
    		this.dataset_id = dataset_id;
    	}
     
    	public String getLocus() {
    		return locusId;
    	}
    	public void setLocus(String locus) {
    		this.locusId = locus;
    	}
     
     
    }

    class : DatasetLocusPk


    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
     
    package sagacity.entity;
    import java.io.Serializable;
     
    // class permettant de créer la clé composée de la class DatasetLocus
    public class DatasetLocusPk implements Serializable {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private long datasetId;
    	private String locusId;
     
    	public DatasetLocusPk() {
     
    	}
     
    	public DatasetLocusPk(long datasetId, String locusId) {
    		this.datasetId = datasetId;
    		this.locusId = locusId;
    	}
     
    	@Override
    	public int hashCode() {
     
    		return (datasetId+locusId).hashCode();
    	}
     
    	@Override
    	public boolean equals(Object obj) {
     
    		/*
    		 * vérification de l'egalite des références, on compare l'objet avec lui
    		 * meme ...
    		 */
    		if (obj == this) {
    			return true;
    		}
     
    		/* On vérifie ensuite si le type des variables(objet) sont les memes */
    		if (obj instanceof DatasetLocusPk) {
     
    			DatasetLocusPk dl = (DatasetLocusPk) obj;
     
    			if (this.datasetId != dl.datasetId) {
    				return false;
    			}
     
    			if (dl.locusId == null
    					|| !this.equals(((DatasetLocusPk) obj).locusId)) {
    				return false;
    			}
     
    			return true;
    		}
     
    		return false;
     
    	}
     
    	/* getters setters */
     
    	public long getDatasetId() {
    		return datasetId;
    	}
     
    	public void setDatasetId(long datasetId) {
    		this.datasetId = datasetId;
    	}
     
    	public String getLocus() {
    		return locusId;
    	}
     
    	public void setLocus(String locus) {
    		this.locusId = locus;
    	}
     
    }

    et dans le fichier persistence.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
     
     
    <?xml version="1.0" encoding="UTF-8"?>
    <persistence version="1.0"
    	xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd">
     
    	<persistence-unit name="sagacityPU">
     
    		<jta-data-source>bdd</jta-data-source>
    		<class>sagacity.entity.DatasetLocusPK</class>
    		<class>sagacity.entity.DatasetLocus</class>
    		<properties>
    			<property name="toplink.logging.level" value="FINE" />
    			<property name="toplink.jdbc.driver" value="com.mysql.jdbc.Driver" />
    			<property name="toplink.jdbc.url" value="jdbc:mysql://localhost:3306/sagacity" />
    			<property name="toplink.jdbc.user" value="root" />
    			<property name="toplink.jdbc.password" value="mysql" />
    			<property name="toplink.ddl-generation" value="drop-and-create-tables" />
    		</properties>
     
    	</persistence-unit>
     
    </persistence>

    je me retrouve avec une erreur me disant :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
     
    Buildfile: C:\Documents and Settings\Stagiaire_2009\Bureau\eclipse-SDK-3.4.2-win32\workspace\.metadata\.plugins\org.eclipse.jst.server.generic.core\serverdef\sunappsrv-ant.xml
    deploy.j2ee.ear:
          [jar] Building jar: C:\Documents and Settings\Stagiaire_2009\Bureau\eclipse-SDK-3.4.2-win32\workspace\.metadata\.plugins\org.eclipse.wst.server.core\tmp0\sagacity.ear
    tools:
    deploy:
         [exec] CLI171 Command deploy failed : Deploying application in domain failed; sagacity/entity/DatasetLocusPK (wrong name: sagacity/entity/DatasetLocusPk)
    deploy-url-message:
         [echo] Application Deployed at: http://localhost:8081/sagacity
    BUILD SUCCESSFUL
    Total time: 5 seconds
    Ou doit se mettre la classe qui représente la clé primaire composé ?
    Merci

  2. #2
    Membre habitué
    Profil pro
    Architecte logiciel
    Inscrit en
    Décembre 2008
    Messages
    77
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Architecte logiciel

    Informations forums :
    Inscription : Décembre 2008
    Messages : 77
    Points : 156
    Points
    156
    Par défaut
    Tu trouveras la réponse sur les classes servant de clé primaire ici:
    http://java.sun.com/javaee/5/docs/tu...bqa.html#bnbqg

Discussions similaires

  1. [EJB3] Persistence XML
    Par nidaya dans le forum JPA
    Réponses: 5
    Dernier message: 05/06/2007, 10h47
  2. Réponses: 6
    Dernier message: 06/10/2006, 23h15
  3. [CF][C#/VS2003]Comment utiliser format de persistance Xml?
    Par Dobyan08 dans le forum Windows Mobile
    Réponses: 10
    Dernier message: 03/03/2006, 14h11
  4. Persistance xml
    Par safazz dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 07/12/2005, 16h30

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