posted 12 years ago
Hi All,
For one of my project, I am using Bidirectional OneToMany Mapping for two entities. I want to maintain User as Speaker & Participants.
1) Two Entities , User and Event,
2) I am using two association relation between these two entities as below,
User [ One- Many] ---->[ Speaker] ----> Event
[ManyToOne]<----[Speaker] <-----
&
Event [One- Many] ---->[ Participant] ----> User
[ManyToOne]<----[Participant] <-----
Class User{
@Column(name="USER_ID")
private Lond Id;
@OneToMany
@JoinTable(name="Speaker",
JoinColumns={@JoinColumn(name="USER_ID")},
inverseJoinColumns={@JoinColumn(name="EVENT_ID")}
)
public Collection<Event> getEvents() {
return events;
}
@ManyToOne
@JoinTable(name="Participants",
joinColumns={@JoinColumn(name="USER_ID", insertable=false,updatable=false)},
inverseJoinColumns={@JoinColumn(name="EVENT_ID", insertable=false,updatable=false)})
public Event getEvent() {
return event;
}
}
2) Class Event{
@Column(name="EVENT_ID")
private Lond Id;
@ManyToOne
@JoinTable(name="Speaker",
joinColumns={@JoinColumn(name="EVENT_ID", insertable=false,updatable=false)},
inverseJoinColumns={@JoinColumn(name="USER_ID", insertable=false,updatable=false)})
public User getUsers() {
return user;
}
@OneToMany
@JoinTable(name="Participants",
JoinColumns={@JoinColumn(name="EVENT_ID")},
inverseJoinColumns={@JoinColumn(name="USER_ID")}
)
public Collection<User> getUsers() {
return users;
}
}
}
Questions:
1) I am getting success, when I create any user or event, it successfully updates the table(users,events,Speaker,Participants), But I am facing issues, when I am creating new Event entity
with the users which is already available in the previously created Event. it throws, exceptions.MySQLIntegrityConstraintViolationException, while creating new event.
How I can prevent this situation?
2) Is this design is good, Should I refactored it ? I am using User Entity as Speaker and participant, and thus all creating issues.
Please assist me resolve my issue, if need more details, then I can provide you.
Thanks