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 :

Unable to define/override @Id(s) on a subclass


Sujet :

JPA Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Octobre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 122
    Par défaut Unable to define/override @Id(s) on a subclass
    Bonjour,

    Suite à un héritage avec une surclasse et dont les deux sont des entités.

    J’obtiens une erreur récurrente.

    Unable to define/override @Id(s) on a subclass: model.Runner

    J'ai beau appliquer les consignes des exemples, rien à faire.

    Pouvez-vous m'aider ?

    Merci

    sur-classe
    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
    99
    100
    101
    102
    103
    104
    105
    package model;
     
    import java.util.Collection;
     
    import javax.persistence.Column;
    import javax.persistence.DiscriminatorColumn;
    import javax.persistence.DiscriminatorType;
    import javax.persistence.Entity;
    import javax.persistence.Id;
    import javax.persistence.Inheritance;
    import javax.persistence.InheritanceType;
    import javax.persistence.Transient;
     
    @Entity
    @Inheritance(strategy=InheritanceType.JOINED)
    @DiscriminatorColumn(name="pId", discriminatorType = DiscriminatorType.INTEGER)
     
    abstract class Person {	
    	@Id
    	@Column(name="personId")
    	private Integer personId;
     
    	@Column(name = "matricule")
    	private String badge;
    	@Column(name = "name")
    	private String name;
    	@Column(name = "trigone")
    	private String trigone;
    	@Column(name = "sexe")
    	private String sex;
    	@Column(name = "unite")
    	private String unit;
    	@Transient
    	private Collection<Permission> permissions;
     
    	public Person() {
    	}
     
    	public Integer getPersonId() {
    		return personId;
    	}
     
    	public void setPersonId(Integer personId) {
    		this.personId = personId;
    	}
     
    	public String getBadge() {
    		return badge;
    	}
     
    	public void setBadge(String badge) {
    		this.badge = badge;
    	}
     
    	public String getName() {
    		try {
    			return name;
    		} catch (NullPointerException e) {
    			return null;
    		}
    	}
     
    	public void setName(String name) {
    		this.name = name;
    	}
     
    	public String getTrigone() {
    		return trigone;
    	}
     
    	public void setTrigone(String trigone) {
    		this.trigone = trigone;
    	}
     
    	public String getSex() {
    		return sex;
    	}
     
    	public void setSex(String sex) {
    		this.sex = sex;
    	}
     
    	public String getUnit() {
    		return unit;
    	}
     
    	public void setUnit(String unit) {
    		this.unit = unit;
    	}
     
    	public Collection<Permission> getPermissions() {
    		return permissions;
    	}
     
    	public void setPermissions(Collection<Permission> permissions) {
    		this.permissions = permissions;
    	}
     
    	public String toString() {
    		StringBuffer sb = new StringBuffer();
    		sb.append(name + "(" + badge + ")");
    		return sb.toString();
    	}
     
    }
    sous-class:
    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
     
    import enums.EnumControlState;
    import exception.ConvertionExeception;
     
    @Entity
    @Table(name="Coureur")
    public class Runner extends Person {
     
    	@Id @GeneratedValue	
    	private Integer runnerId;
     
    	private String result;
    	private String noteSupervisor;
     
    	@Transient
    	private EnumControlState state;
     
    	public Runner(){}
     
    	public Integer getIndex() {
    		return runnerId;
    	}
     
    	public void setIndex(Integer index) {
    		this.runnerId = index;
    	}
     
    	public Integer getResultInSec() throws ConvertionExeception {
    		return ConvertingHelperClass.convertToSecond(result);
    	}
     
    	public String getResult() {
    		return result;
    	}
     
    	public void setResult(String result) {
    		this.result = result;
    	}
     
    	public String getNoteSupervisor() {
    		return noteSupervisor;
    	}
     
    	public void setNoteSupervisor(String noteSupervisor) {
    		this.noteSupervisor = noteSupervisor;
    	}
     
    	public EnumControlState getState() {
    		return state;
    	}
     
    	public void setState(EnumControlState state) {
    		this.state = state;
    	}
    	public String toString(){
    		StringBuffer sb = new StringBuffer();
    			sb.append(this.getName() + "(" + this.getBadge() + ")");
    		return sb.toString(); 
    	}
    }

  2. #2
    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
    Chelou ta conception . Tu ne peux effectuer un héritage en désignant une clé primaire dans le pere et le fils,peux tu nous faire voir le tuto où t'as vu ça? Je ne crois pas que JPA ecrasera l'une des 2 clés et retiendra une seule pour la classe concrete finale. et puis une ca m'étonnerait aussi qu'une entité abstraite puisse contenir la clause @Entity, si t'as envie de persister les attributs d'une classe abstraite, tu mets plutot la clause : au dessus de la classe et tu la fais étendre où tu veux.

  3. #3
    Membre confirmé
    Homme Profil pro
    Analyste programmeur
    Inscrit en
    Octobre 2010
    Messages
    122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste programmeur

    Informations forums :
    Inscription : Octobre 2010
    Messages : 122
    Par défaut
    Citation Envoyé par DevServlet Voir le message
    Chelou ta conception . Tu ne peux effectuer un héritage en désignant une clé primaire dans le pere et le fils,peux tu nous faire voir le tuto où t'as vu ça? Je ne crois pas que JPA ecrasera l'une des 2 clés et retiendra une seule pour la classe concrete finale. et puis une ca m'étonnerait aussi qu'une entité abstraite puisse contenir la clause @Entity, si t'as envie de persister les attributs d'une classe abstraite, tu mets plutot la clause : au dessus de la classe et tu la fais étendre où tu veux.
    Merci pour la note d'humour, dont t'es le seul à avoir le secret

    Mais, bon, tu avais raison !!!

    Aurais tu une bonne doc, puisque là je part dans tous les sens

    bàt

  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
    jpa sur developpez.com, mais bon un petit tour google et tu trouveras des tuto très explicites en pdf sur les héritages jpa. C'est ce qu'il te faut prendre le temps pour lire. n'hesites pas si t'as des questions.

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

Discussions similaires

  1. Avantages de OnSomething / override
    Par Bruno75 dans le forum Langage
    Réponses: 7
    Dernier message: 20/10/2003, 19h49
  2. Define sur plusieurs lignes
    Par Gogoye dans le forum C
    Réponses: 6
    Dernier message: 06/10/2003, 11h45
  3. unable to create INITIAL extent for segment in tablespace
    Par Ludolitaliano dans le forum Administration
    Réponses: 4
    Dernier message: 11/09/2003, 16h43
  4. define avec GCC.
    Par vagabon dans le forum Autres éditeurs
    Réponses: 4
    Dernier message: 12/06/2003, 14h04
  5. Problème d'override...
    Par NeoMan dans le forum Langage
    Réponses: 6
    Dernier message: 10/03/2003, 14h21

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