Inną kwestią Hibernate ...: PHibernate many-to-many związek z tym samym podmiotem
Korzystanie Adnotacje ramy Hibernate, mam podmiot User
. Każdy model User
może mieć kolekcję znajomych: kolekcję innych modeli User
. Jednak nie byłem w stanie wymyślić, jak utworzyć powiązanie wiele do wielu w klasie User
s, składające się z listy User
s (przy użyciu tabeli pośredniej dla użytkowników znajomych).
Oto klasa użytkownika i jego adnotacje: tabela mapowania
@Entity
@Table(name="tbl_users")
public class User {
@Id
@GeneratedValue
@Column(name="uid")
private Integer uid;
...
@ManyToMany(
cascade={CascadeType.PERSIST, CascadeType.MERGE},
targetEntity=org.beans.User.class
)
@JoinTable(
name="tbl_friends",
[email protected](name="personId"),
[email protected](name="friendId")
)
private List<User> friends;
}
Użytkownik przyjaciel ma tylko dwie kolumny, z których oba są klucze obce do kolumny tabeli tbl_users
uid
. Dwie kolumny to: personId
(która powinna być odwzorowana na bieżącego użytkownika) i friendId
(która określa identyfikator znajomego bieżącego użytkownika).
Problem polega na tym, że pole "znajomi" wciąż wychodzi null, mimo że wstępnie wypełniłem tabelę znajomych tak, że wszyscy użytkownicy w systemie są przyjaciółmi z innymi użytkownikami. Próbowałem nawet zmienić relację na @OneToMany
, a ona nadal wychodzi null (chociaż wynik debugowania Hibernuj pokazuje zapytanie SELECT * FROM tbl_friends WHERE personId = ? AND friendId = ?
, ale nic więcej).
Wszelkie pomysły na wypełnienie tej listy? Dziękuję Ci!
ja ufałem ci "Przyszedł mi na ratunek po raz trzeci :) Udało się to doskonale, a twoje wyjaśnienie znacznie wyjaśnia moje zrozumienie ER. Dziękuję bardzo, jeszcze raz! :) – Magsol
Czy mogę łączyć przyjaciół i przyjaciół? A jeśli nie, potrzebuję pomocy z jsonmanagedreference i jsonbackreference w jednym obiekcie w tym pytaniu: http://stackoverflow.com/questions/24563066/hibernate-user-and-friends-jsonreference – dikkini
Używam Hibernate 5 i jednej kolekcji wystarcza - użycie dwóch tworzy zduplikowane wiersze w tbl_friends. – mdziob