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

Persistance des données Java Discussion :

[Débutant] Problème d’héritage avec EJB3


Sujet :

Persistance des données Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 40
    Points
    40
    Par défaut [Débutant] Problème d’héritage avec EJB3
    Salut
    voila j'ai un problème à faire l'ajout dans la base j'ai voulu utilisé la notion de l’héritage en ejb3 mais j'ai ce message comme erreur
    java.lang.IllegalArgumentException: Object: ejbetheritage.Personne[id=1] is not a known entity type.
    voila monde code
    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
    /
    @Entity
    @Inheritance(strategy=InheritanceType.SINGLE_TABLE)
    @DiscriminatorColumn(name="type",discriminatorType=DiscriminatorType.STRING,length=40)
    @Table(name = "personne")
    @NamedQueries({
        @NamedQuery(name = "Personne.findAll", query = "SELECT p FROM Personne p"),
        @NamedQuery(name = "Personne.findById", query = "SELECT p FROM Personne p WHERE p.id = :id"),
        @NamedQuery(name = "Personne.findByNom", query = "SELECT p FROM Personne p WHERE p.nom = :nom")})
    public class Personne implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @Basic(optional = false)
        @Column(name = "id")
        private Integer id;
        @Column(name = "nom")
        private String nom;
     
        public Personne() {
        }
     
        public Personne(Integer id) {
            this.id = id;
        }
     
        public Integer getId() {
            return id;
        }
     
        public void setId(Integer id) {
            this.id = id;
        }
     
        public String getNom() {
            return nom;
        }
     
        public void setNom(String nom) {
            this.nom = nom;
        }
     
     
     
        @Override
        public int hashCode() {
            int hash = 0;
            hash += (id != null ? id.hashCode() : 0);
            return hash;
        }
     
        @Override
        public boolean equals(Object object) {
            // TODO: Warning - this method won't work in the case the id fields are not set
            if (!(object instanceof Personne)) {
                return false;
            }
            Personne other = (Personne) object;
            if ((this.id == null && other.id != null) || (this.id != null && !this.id.equals(other.id))) {
                return false;
            }
            return true;
        }
     
        @Override
        public String toString() {
            return "ejbetheritage.Personne[id=" + id + "]";
        }
     
    }
    classe qui hérite de personne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    @Entity
    @DiscriminatorValue("Personne")
    public class Prof extends Personne{
     
        public Prof() {
        }
     
        Prof(int i) {
            super(i);
        }
     
    }
    code de mon main
    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
     public static void main(String[] args) {
     
    try{
            EntityManager emd= Persistence.createEntityManagerFactory("EjbEtHeritagePU").createEntityManager();
            Prof p= new Prof(2);
            p.setNom("Test");
            emd.persist(p);
            System.out.println("Ajout bien fait");
     
            }catch(Exception e){
     
             System.out.println(e);
            } 
     
        }
    voila s'il vous comment résoudre ce problème
    merci d’avance

  2. #2
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    voila j'ai peu résoudre le problème mais quand j'ai vérifié ma base je n'ai trouvé que une nouvelle table sequnce !!!!! si pas personne que je devais avoir non ??



    merci d'avance

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2009
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2009
    Messages : 80
    Points : 74
    Points
    74
    Par défaut dao et persistence
    Bonjour,

    A mon avis il faut ne faut pas trop chercher à faire de l'objet avec la persistence. Si vous avez besoin d'une classe pour décrire un professeur faite la en POJO, puis ensuite traité de la persistence à part dans votre code. Pour moi la persistence c'est juste un moyen d'enrober le code SQL.

    Le seul cas d'héritage que j'ai utilisé c'est une classe d'attributs qui me permet d'avoir des champs identiques entre plusieurs tables:

    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
    @MappedSuperclass
    public class Attributs implements Serializable {
        @Basic(optional = false)
        @Column(name = "ATTR", nullable = false, length = 10)
        private String attr;
        @Basic(optional = false)
        @Column(name = "VAL", nullable = false, length = 150)
        private String val;
        public Attributs(){
            super();
        }
        public String getAttr() {
            return attr;
        }
    Et son utilisation dans une entité:
     
    @Entity
    @Table(name = "CPTE_ATTRS", schema="techdecision")
    @NamedQueries({
        @NamedQuery(name = "CpteAttrs.findAll", query = "SELECT c FROM CpteAttrs c"),
        @NamedQuery(name = "CpteAttrs.findByAttr", query = "SELECT c FROM CpteAttrs c WHERE c.attr = :attr"),
        @NamedQuery(name = "CpteAttrs.findByVal", query = "SELECT c FROM CpteAttrs c WHERE c.val = :val"),
        @NamedQuery(name = "CpteAttrs.findByPkattrCpte", query = "SELECT c FROM CpteAttrs c WHERE c.pkattrCpte = :pkattrCpte"),
        @NamedQuery(name = "CpteAttrs.findByFkCpte", query = "SELECT c FROM CpteAttrs c WHERE c.fkcpte = :fkcpte")
    })
    public class CpteAttrs extends Attributs implements Serializable {
        private static final long serialVersionUID = 1L;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
    au fait EJB3 et persistence ce n'est pas la même chose.

    SP

  4. #4
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    merci j'ai bien compris mais moi ce que je cherche à faire c'est évitée d'avoir une table avec plusieurs colonnes

  5. #5
    Membre du Club
    Inscrit en
    Avril 2010
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Avril 2010
    Messages : 60
    Points : 40
    Points
    40
    Par défaut
    problème résolut j'avais un problème dans l'ajout et merci spopoff grâce à toi je connais @MappedSuperclass maintenant

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

Discussions similaires

  1. [Débutant] Problème d'ajout EJB3
    Par ghost10 dans le forum Java EE
    Réponses: 9
    Dernier message: 07/07/2011, 14h10
  2. Réponses: 11
    Dernier message: 04/06/2011, 02h45
  3. [Débutant] Problème avec Dev-Cpp 4.9.9.0
    Par P4Pi dans le forum Dev-C++
    Réponses: 7
    Dernier message: 16/01/2010, 16h48
  4. [débutant] problème avec un "if"
    Par pingoui dans le forum Langage
    Réponses: 10
    Dernier message: 11/08/2004, 09h46
  5. [débutant] Problèmes avec CRegKey
    Par Pedro dans le forum MFC
    Réponses: 4
    Dernier message: 10/11/2003, 15h28

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