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 :

Créer une relation @ManyToMany


Sujet :

Persistance des données Java

  1. #1
    Membre régulier
    Créer une relation @ManyToMany
    Bonjour,

    J'ai le modèle de données suivant:



    avec l'entité Eleve suivante:
    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
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    
    @Entity(name = "Eleve")
    @Table(name = "eleve")
    public class Eleve implements Serializable {
    
    
    	@Id
    	@GeneratedValue(strategy = GenerationType.SEQUENCE)
    	@Column(name = "id", updatable = false, nullable = false)
    	private int id;
    
    
    	private String nom;
    
    
    	private String prenom;
    
    
    	@Column(name = "date_naissance")
    	private Date dateNaissance;
    
    
    	private String adresse;
    
    
    	@ManyToMany(cascade = { CascadeType.ALL })
    	@JoinTable(name = "cours_eleve", joinColumns = { @JoinColumn(name = "eleve_id") }, inverseJoinColumns = {
    			@JoinColumn(name = "cours_id") })
    	public Set<Cours> cours = new HashSet<Cours>();
    
    
    	public Eleve() {
    		super();
    	}
    
    
    	public int getId() {
    		return id;
    	}
    
    
    	public void setId(int id) {
    		this.id = id;
    	}
    
    
    	public Eleve(String nom, String prenom, Integer annee) {
    		super();
    		this.nom = nom;
    		this.prenom = prenom;
    
    
    	}
    
    
    	public Eleve(String nom, String prenom, Date dateNaissance, String adresse) {
    		super();
    		this.nom = nom;
    		this.prenom = prenom;
    
    
    		this.dateNaissance = dateNaissance;
    		this.adresse = adresse;
    	}
    
    
    	public String getNom() {
    		return nom;
    	}
    
    
    	public void setNom(String nom) {
    		this.nom = nom;
    	}
    
    
    	public String getPrenom() {
    		return prenom;
    	}
    
    
    	public void setPrenom(String prenom) {
    		this.prenom = prenom;
    	}
    
    
    	public Date getDateNaissance() {
    		return dateNaissance;
    	}
    
    
    	public void setDateNaissance(Date dateNaissance) {
    		this.dateNaissance = dateNaissance;
    	}
    
    
    	public String getAdresse() {
    		return adresse;
    	}
    
    
    	public void setAdresse(String adresse) {
    		this.adresse = adresse;
    	}
    
    
    	public Set<Cours> getCours() {
    		return cours;
    	}
    
    
    	public void setCours(Set<Cours> cours) {
    		this.cours = cours;
    	}



    Lorsque j'invoque cette entité, j'ai le message d'erreur suivant qui est généré par la relation @manytoone (si je l'enlève, tout fonctionne parfaitement):

    Exception in thread "main" javax.ejb.EJBException: java.rmi.MarshalException: CORBA MARSHAL 1330446347 Maybe; nested exception is: org.omg.CORBA.MARSHAL: AVERTISSEMENT: 00810011: Exception from readValue on ValueHandler in CDRInputStream vmcid: OMG minor code: 11 completed: Maybe
    at ch.myapp.bean._MySessionBeanRemote_Wrapper.findEleveById(ch/myapp/bean/_MySessionBeanRemote_Wrapper.java)
    at ch.myapp.test.datasource.EJBTester.<init>(EJBTester.java:46)
    at ch.myapp.test.datasource.EJBTester.main(EJBTester.java:74)
    Caused by: java.rmi.MarshalException: CORBA MARSHAL 1330446347 Maybe; nested exception is:
    org.omg.CORBA.MARSHAL: AVERTISSEMENT: 00810011: Exception from readValue on ValueHandler in CDRInputStream vmcid: OMG minor code: 11 completed: Maybe
    at com.sun.corba.ee.impl.javax.rmi.CORBA.Util.mapSystemException(Util.java:267)
    at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:201)
    at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.invoke(StubInvocationHandlerImpl.java:140)
    at com.sun.corba.ee.impl.presentation.rmi.codegen.CodegenStubBase.invoke(CodegenStubBase.java:226)
    at ch.myapp.bean.__MySessionBeanRemote_Remote_DynamicStub.findEleveById(ch/myapp/bean/__MySessionBeanRemote_Remote_DynamicStub.java)
    ... 3 more
    Caused by: org.omg.CORBA.MARSHAL: AVERTISSEMENT: 00810011: Exception from readValue on ValueHandler in CDRInputStream vmcid: OMG minor code: 11 completed: Maybe
    at com.sun.proxy.$Proxy19.valuehandlerReadException(Unknown Source)
    at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:826)
    at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.read_value(CDRInputStream_1_0.java:921)
    at com.sun.corba.ee.impl.encoding.CDRInputObject.read_value(CDRInputObject.java:518)
    at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl$14.read(DynamicMethodMarshallerImpl.java:383)
    at com.sun.corba.ee.impl.presentation.rmi.DynamicMethodMarshallerImpl.readResult(DynamicMethodMarshallerImpl.java:482)
    at com.sun.corba.ee.impl.presentation.rmi.StubInvocationHandlerImpl.privateInvoke(StubInvocationHandlerImpl.java:191)
    ... 6 more
    Caused by: java.io.StreamCorruptedException: AVERTISSEMENT: ORBIO00013: Stream corrupted
    at com.sun.proxy.$Proxy69.streamCorrupted(Unknown Source)
    at com.sun.corba.ee.impl.io.IIOPInputStream.inputClassFields(IIOPInputStream.java:2527)
    at com.sun.corba.ee.impl.io.IIOPInputStream.inputObjectUsingFVD(IIOPInputStream.java:1627)
    at com.sun.corba.ee.impl.io.IIOPInputStream.simpleReadObject(IIOPInputStream.java:348)
    at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValueInternal(ValueHandlerImpl.java:311)
    at com.sun.corba.ee.impl.io.ValueHandlerImpl.readValue(ValueHandlerImpl.java:277)
    at com.sun.corba.ee.impl.encoding.CDRInputStream_1_0.readRMIIIOPValueType(CDRInputStream_1_0.java:819)
    ... 11 more



    Qu'est-ce que je fais faux ?

    Merci

  2. #2
    Membre régulier
    J'ai trouvé un exemple qui m'a permis de réaliser ce many to one.