bonjour,
je travail avec Jpa hibernate 2.1, mon model est une classe annotée de plusieurs ManyToOne, voici le code ;
error : This class has a composite primary key. It must use an ID 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
package flights;
 
import java.io.Serializable;
 
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.ManyToOne;
 
@Entity // This class has a composite primary key. It must use an ID class.
public class Route implements Serializable {
    private static final long serialVersionUID = -2403746842148223177L;
 
    private String airlineCode;
 
    @ManyToOne
    @Id
    private Airline airline;
 
    private String sourceCode;
 
    @ManyToOne
    @Id
    private Airport source;
 
    private String destinationCode;
 
    @ManyToOne
    @Id
    private Airport destination;
 
    private Boolean codeshare;
 
    private Short stops;
 
    private String equipment;
      /**
      *****************************
     Getters and Setters
     *******************************
       */
Suite a une erreur de codage je suis obligé d'éclater ma classe en deux classes, voici mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
@Embeddable
public final class RouteId implements Serializable {
 
  @ManyToOne
  private Airline airline;
 
  @ManyToOne
  private Aiport airport;
 
  @ManyToOne
  private Airport destination;
 
}
C'est la première fois que j'utilise @Embeddable, mais j'ai du mal a maitriser le concept !

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
@Entity
public final class Route implements Serializable {
 
  @Id
  private RouteId id;
 
  private String sourceCode;
 
  private String destinationCode;
 
  private boolean codeshare;
 
  private short stops;
 
  private String equipment;
 
}
Eclipse me retoune une erreur sur le @Embeddable ; The Java class for mapped type "flights.RouteId" is final.

J'ai effectué des recherche sur le net mais j'assimile pas le @Embeddable