Запрос гибернации с присоединением пользователя к друзьям, где друзья пользователя отображаются с использованием отношения «многие ко многим» - PullRequest
0 голосов
/ 14 декабря 2010

Я использую Hibernate и JPA.

public class UserBean {
    private String email;
    private String name;
    private Set<UserBean> friends;
    private Set<UserBean> befriended;
}

@ManyToMany(
    targetEntity=com.pixping.model.UserBean.class,
    fetch = FetchType.LAZY
)
@JoinTable(
    name="user_friends",
    joinColumns=@JoinColumn(name="USER_ID", nullable=false),
    inverseJoinColumns=@JoinColumn(name="FRIEND_ID", nullable=false)
)
public Set<UserBean> getFriends() {
    return friends;
}

public void setFriends(Set<UserBean> friends) {
     this.friends = friends;
}

@ManyToMany(mappedBy = "friends", fetch = FetchType.LAZY)
public Set<UserBean> getBefriended() {
    return befriended;
}

Я бы хотел реализовать эту функцию

public UserBean findUser(Long userId, Long friendId) {

}

где входные данные представляют собой идентификатор пользователя и идентификатор друга, и если пользователь дружит с этим человеком, верните пользователя вместе с другом, иначе верните только пользователя. Этот друг может находиться в одной из коллекций «друзей» или «подружиться», и когда он будет возвращен, эти коллекции должны содержать только этого друга и никаких других друзей.

Как мне реализовать запрос для этого? Если возможно, приведите пример.

1 Ответ

0 голосов
/ 15 декабря 2010

Я не уверен, что это можно сделать с помощью запроса (HQL или Criteria), но это можно сделать с помощью фильтра.Вы пытались использовать один?

...