EntityNotFoundException lors d'un merge
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 :
Code:
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());
} |
j'obtiens l'erreur suivante :
Code:
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é :
Code:
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 classe d'association
Code:
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;
... |
la pk :
Code:
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;
... |
l'autre classe utilisé pour la pk :
Code:
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>(); |
Voilà, si vous avez des piste n'hésitez pas à me les soumettre. Merci