Hibernate ManyToMany, ссылающийся на себя - PullRequest
0 голосов
/ 24 апреля 2020

Я новичок в hibernate. Я пытался установить двустороннюю связь с другом пользователя с ассоциацией ManyToMany, но при попытке вставить ее ничего не произошло

Пользовательский объект

@Entity
@Table(name = "USERS")
public class User implements Serializable {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    private int idUser;
    private String pseudo;
    private String password;
    private String nom;
    private String prenom;
    private String email;
    private Boolean isConnected;
    @ManyToMany(cascade = CascadeType.ALL)
    @JoinTable(name="tbl_friends",
            joinColumns={@JoinColumn(name="userId")},
            inverseJoinColumns={@JoinColumn(name="friendId")}
    )
    private List<User> friends;

    @ManyToMany(mappedBy = "friends")

    private List<User> friendOf;

Добавить функцию

    @Override
    public boolean addFriend(User user, User newFriend) {
        EntityTransaction transaction = entityManager.getTransaction();
        if(!transaction.isActive())
            transaction.begin();
        try {
            Query query = entityManager.createQuery("select u from User u where u.pseudo = :pseudo");
            query.setParameter("pseudo", user.getPseudo());
            user = (User) query.getSingleResult();
            query = entityManager.createQuery("select u from User u where u.pseudo = :pseudo");
            query.setParameter("pseudo", newFriend.getPseudo());
            newFriend = (User) query.getSingleResult();
            user.getFriends().add(newFriend);
            entityManager.persist(user);
            transaction.commit();
            return true;
        }catch (Exception e){
            transaction.rollback();
            e.printStackTrace();
        }
        return false;
    }

Можете ли вы помочь мне решить эту проблему, пожалуйста

1 Ответ

0 голосов
/ 24 апреля 2020

Я сделал несколько модификаций геттера в пользовательском классе "getFriends". После удаления этих модификаций он отлично работает

...