我有一个Springboot应用程序,该应用程序包含2个实体,即用户和好友请求。用户实体看起来像这样:
public class User{
@Id
private BigInteger id;
private String firstName;
private String lastName;
private String email;
private String password;
}
而FriendRequest对象看起来像这样:
public class FriendRequest{
@Id
private BigInteger id;
private User sender;
private FriendRequestStatus friendRequestStatus;
private User recipient;
}
朋友请求类具有4个属性:
ID
请求的发送者是用户
请求的接收者,也是用户
friendRequestStatus-可以是“待处理”(如果请求未被接受),“已接受”(如果朋友请求已被接受)或“已拒绝”(如果请求被拒绝)。
< / li>我想使用FriendRequest表来获取特定用户的所有朋友,而不是我创建一个Friends表-它通过获取特定用户是发送者或接收者并且acceptedRequest被接受的所有朋友请求来工作。然后,如果收件人是您正在寻找朋友的用户,则进一步选择发件人作为朋友,如果收件人是您正在寻找朋友的用户,则选择收件人。最后,我想获得一个列表。
我的问题是我不知道如何在MongoDB中实现springboot,当使用Postgre时,这是我运行的查询,并且运行良好:
@Query(value = "SELECT * \n" +
"FROM ( \n" +
"SELECT DISTINCT CASE sender WHEN 1 THEN recipient ELSE sender END AS friend_id \n" +
"FROM friendrequest WHERE 1 IN (recipient, sender) \n" +
"AND friendrequeststatus = 'ACCEPTED' \n" +
") f \n" +
"LEFT JOIN users u\n" +
"ON f.friend_id = u.id\n" +
"ORDER BY friend_id \n-- #pageable\n"
,nativeQuery = true)
Page<User> getFriends(Pageable pageable);
但是如何在MongoDB for Springboot中复制它是一个大问题