Hibernate查询用于将用户与使用多对多关系映射用户朋友的朋友联系起来

时间:2010-12-14 16:18:48

标签: hibernate join many-to-many

我正在使用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) {

}

其中输入是用户ID和朋友ID,如果用户是该人的朋友,则返回用户和朋友,否则只返回用户。这位朋友可以是收藏中的“朋友”或“朋友”,当收到这些收藏时,这些收藏品应该只包含这位朋友而不包含其他朋友。

如何实现查询来执行此操作?如果可能的话请提供一个例子。

1 个答案:

答案 0 :(得分:0)

我不确定是否可以使用查询(HQL或Criteria)来完成,但这可以使用过滤器完成。你尝试过用过吗?