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 :

Erreur "AnnotationException: No identifier specified for entity" [Mapping]


Sujet :

Hibernate Java

  1. #1
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut Erreur "AnnotationException: No identifier specified for entity"
    Bonjour

    J'ai une table que je veux representer en Une classe JPA 2.0,

    Table
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    CREATE TABLE `f_utilisateur_emetteur` (
      `f_utilisateur` bigint(20) NOT NULL,
      `emetteur` bigint(20) NOT NULL,
      PRIMARY KEY (`f_utilisateur`,`emetteur`),
      KEY `FK9F09081A88EE2CB` (`f_utilisateur`),
      KEY `FK9F09081A5A83FFEC` (`emetteur`),
      CONSTRAINT `f_utilisateur_emetteur_ibfk_4` FOREIGN KEY (`emetteur`) REFERENCES `f_emetteur` (`id`),
      CONSTRAINT `f_utilisateur_emetteur_ibfk_3` FOREIGN KEY (`f_utilisateur`) REFERENCES `f_utilisateur` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=latin1;
    Representation

    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
    @Entity
    @Table(name = "f_utilisateur_emetteur", uniqueConstraints = @UniqueConstraint(columnNames = {
    		"f_utilisateur", "emetteur" }))
    @Configurable
    public class UtilisateurEmetteur {
     
    	@ManyToMany(cascade = CascadeType.ALL)
    	@Column(name = "f_utilisateur")
    	private Integer id;
     
    	@ManyToMany(cascade = CascadeType.ALL)
    	@Column(name = "emetteur")
    	private Integer emetteur;
     
    	public Integer getF_utilisateur() {
    		return id;
    	}
     
    	public void setF_utilisateur(Integer f_utilisateur) {
    		this.id = f_utilisateur;
    	}
     
    	public Integer getEmetteur() {
    		return emetteur;
    	}
     
    	public void setEmetteur(Integer emetteur) {
    		this.emetteur = emetteur;
    	}
    	@PersistenceContext
    	transient EntityManager entityManager;
     
     
    	@Transactional
    	public void persist() {
    		if (this.entityManager == null)
    			this.entityManager = entityManager();
    		this.entityManager.persist(this);
    	}
     
    	@Transactional
    	public void remove() {
    		if (this.entityManager == null)
    			this.entityManager = entityManager();
    		if (this.entityManager.contains(this)) {
    			this.entityManager.remove(this);
    		} else {
    			UtilisateurEmetteur attached = this.entityManager
    					.find(this.getClass(), this.id);
    			this.entityManager.remove(attached);
    		}
    	}
     
    	@Transactional
    	public void flush() {
    		if (this.entityManager == null)
    			this.entityManager = entityManager();
    		this.entityManager.flush();
    	}
     
    	@Transactional
    	public UtilisateurEmetteur merge() {
    		if (this.entityManager == null)
    			this.entityManager = entityManager();
    		UtilisateurEmetteur merged = this.entityManager.merge(this);
    		this.entityManager.flush();
    		return merged;
    	}
     
    	public static final EntityManager entityManager() {
    		EntityManager em = new UtilisateurEmetteur().entityManager;
    		if (em == null)
    			throw new IllegalStateException(
    					"Entity manager has not been injected (is the Spring Aspects JAR configured as an AJC/AJDT aspects library?)");
    		return em;
    	}
     
     
     
    }
    au lancement de l'application j'ai le message d'erreur suivant
    AnnotationException: No identifier specified for entity UtilisateurEmetteur
    Une idée d'ou ça peut en venir ? Merci d'avance

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Août 2002
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 143
    Par défaut
    Il te manque l'annotation @Id

  3. #3
    Membre éclairé
    Avatar de Jcpan
    Inscrit en
    Août 2008
    Messages
    542
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 542
    Par défaut
    J'ai une clé primaire composée, je fais comment dans ce cas ?

  4. #4
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 938
    Par défaut
    Bonjour, il faut créer un objet Java , composé de tes 2 attributs clés primaires, et dans ton entité qui plante tu désigneras cet objet EmbeddeId comme ta clé primaire.L'exemple vaut mieux que la la leçon je sais bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    @Entity
    public class Project {
        @EmbeddedId ProjectId id;
         :
    }
     
    @Embeddable
    Class ProjectId {
        int departmentId;
        long projectId;
    }

  5. #5
    Membre Expert Avatar de jeffray03
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2008
    Messages
    1 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 501
    Par défaut
    Tu dois :
    1. creer une classe contennat tes champs composant ta cle primaire.
    Ex:
    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 class taclassePK implements Serializable {
     
    	/**
             * 
             */
    	private static final long serialVersionUID = 1L;
    	private long f_utilisateur;
    	private long emetteur;
     
    	 // même nom et même type que dans  ta mapping classe
        public long getEmetteur() {
            return emetteur;
        }
     
        public void setEmetteur(long emetteur) {
            this.emetteur = emetteur;
        }
     
        // même nom et même type que dans  ta mapping classe
        public long getF_utilisateur() {
            return f_utilisateur;
        }
     
        public void setF_utilisateur(long f_utilisateur) {
            this.f_utilisateur = f_utilisateur;
        }
     
     
    }
    2. ensuite tu mets dans ta declaration:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
       @IdClass(taclassePK.class)
       public class UtilisateurEmetteur {

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/12/2007, 22h22
  2. Réponses: 3
    Dernier message: 23/01/2006, 16h29
  3. Réponses: 16
    Dernier message: 12/01/2006, 16h14
  4. ORA-24373 : invalid length specified for statement
    Par fa_say dans le forum Oracle
    Réponses: 2
    Dernier message: 19/11/2005, 14h16

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