Ich bin ORM sehr neu und kann jedem eine Idee vorschlagen, das folgende Szenario zu übertreffen.Objektrelationales Mapping
Ich habe eine Chat-Klasse als Gebrüll
@Entity
public class Chat {
@Id
@GeneratedValue
@Column(name="Id")
private int id;
@ManyToOne
private User userSent;
@ManyToOne
private User userRecieve;
private Date time;
@Column(name="message", length=50)
private String message;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public Date getTime() {
return time;
}
public void setTime(Date time) {
this.time = time;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
Und die User-Klasse als Gebrüll
@Entity
public class User {
@Id
@GeneratedValue
private Integer id;
private String name;
private String email;
private String password;
@OneToMany
private List<Chat> chats;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public List<Chat> getChats() {
return chats;
}
public void setChats(List<Chat> chats) {
this.chats = chats;
}
}
Und mein Problem ist ein Benutzer viele Chats und der Chat hat zwei verschiedene Arten von Benutzern hat als Empfänger und Absender, aber beide gehören zu einem bestimmten Chat.
Und meine Frage ist, wie ich es erklären kann, wie man die Beziehung gibt. Vielen Dank im Voraus
Die Chats-Liste des Benutzers enthält also alle Chats, in denen der Benutzer entweder ein Sender oder ein Empfänger ist? –
Bidirektionale Eins-zu-Viele-Verknüpfungen werden im Handbuch behandelt: http://docs.jboss.org/hibernate/orm/5.1/userguide/html_single/Hibernate_User_Guide.html#associations-one-to-many-bidirektional –
Aber das ist eher eine "zwei zu viele" Beziehung. Es ist sehr kompliziert, das bidirektional zu machen. Ich würde es unidirektional machen und eine "findByUser" - oder "findByUserId" -Methode in Ihrem 'ChatRepository' bereitstellen. –