Bonjour,
je suis un peu perdu et j'ai besoin d'une aide extérieur. J'ai des soucis pour mapper une classe d'association avec des attributs.
Le mapping en lui-même, j'ai trouver des solution sur le net.
Par contre pour le merge en cascade, j'ai constemment des exceptions.
Est-ce possible? comment?
Dans mon cas, je cherche à persister un "travelRequest" avec sa liste de "requestMember".
Concrétement, lorsque je lance ceci :
j'obtiens l'erreur 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 @Test public final void testAddingTravelWithMember(){ TravelRequest travelRequest = new TravelRequest(); RequestMember requestMember = new RequestMember(); requestMember.setTravelRequest(travelRequest); requestMember.setMember(member); travelRequest.getRequestMembers().add(requestMember); member.getRequestMembers().add(requestMember); travelRequest = emTest.update(travelRequest); Assert.assertNotNull(travelRequest.getTravelRequestId()); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 javax.persistence.EntityNotFoundException: Unable to find com.traveldoo.ejb.entities.RequestMember with id com.traveldoo.ejb.entities.RequestMemberPk@a0c486 at org.hibernate.ejb.Ejb3Configuration$Ejb3EntityNotFoundDelegate.handleEntityNotFound(Ejb3Configuration.java:133) at org.hibernate.event.def.DefaultLoadEventListener.load(DefaultLoadEventListener.java:233) at org.hibernate.event.def.DefaultLoadEventListener.proxyOrLoad(DefaultLoadEventListener.java:285) at org.hibernate.event.def.DefaultLoadEventListener.onLoad(DefaultLoadEventListener.java:152) ...
Voici les extraits de code appelé :
la classe d'association
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 @Entity @Table(name = "TRAVEL_REQUEST") public class TravelRequest implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name = "TRAVEL_REQUEST_ID", unique = true, nullable = false, precision = 10) @GeneratedValue(generator = "SEQUENCE_TRAVEL_REQUEST_ID") @SequenceGenerator(name = "SEQUENCE_TRAVEL_REQUEST_ID", sequenceName = "SEQUENCE_TRAVEL_REQUEST") private Long travelRequestId; ... @OneToMany(mappedBy = "travelRequest") private List<RequestAction> actions = new ArrayList<RequestAction>(); @OneToMany(mappedBy = "travelRequest") private List<RequestMember> requestMembers = new ArrayList<RequestMember>(); ...
la pk :
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 @Table(name = "REQUEST_MEMBERS") public class RequestMember implements Serializable { private static final long serialVersionUID = 1L; @EmbeddedId private RequestMemberPk pk = new RequestMemberPk(); @ManyToOne @JoinColumn(name = "TRAVEL_REQUEST_ID", insertable = false, updatable = false) private TravelRequest travelRequest; @ManyToOne @JoinColumn(name = "MEMBER_ID", insertable = false, updatable = false) private Member member; ...
l'autre classe utilisé pour la pk :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 @Embeddable public class RequestMemberPk implements Serializable { private static final long serialVersionUID = 5089975622327078543L; @Column(name = "TRAVEL_REQUEST_ID", nullable = false) private Long travelRequestId; @Column(name = "MEMBER_ID", nullable = false) private Long memberId; ...
Voilà, si vous avez des piste n'hésitez pas à me les soumettre. Merci
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 @Table(name = "MEMBER") public class Member implements Serializable { private static final long serialVersionUID = 1L; @Id @Column(name = "MEMBER_ID", unique = true, nullable = false, precision = 10) @GeneratedValue(generator = "SEQUENCE_MEMBER_ID") @SequenceGenerator(name = "SEQUENCE_MEMBER_ID", sequenceName = "SEQUENCE_MEMBER") private Long memberId; ... @OneToMany(mappedBy = "member", cascade = ALL) private List<Profile> profiles = new ArrayList<Profile>(); @OneToMany(mappedBy = "member") private List<RequestMember> requestMembers = new ArrayList<RequestMember>();
Partager