我在为我的聊天应用程序从数据库中获得不同的发送者和接收者时遇到了一些麻烦:
这是我的消息模型:
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
private Integer id;
@NotNull
private String Content;
@Temporal(TemporalType.TIMESTAMP)
private Date date = new Date();
@ManyToOne
@JoinColumn(name = "sender_id")
private User sender;
@ManyToOne
@JoinColumn(name = "receiver_id")
private User receiver;
假设我们以用户A的身份登录,数据库如下:
发送方 | 接收方 | B | B
---|---|
C | |
根据目标值的指定,可以选择sender
或receiver
。(见演示)
select string_agg(res, ' ' order by res)
from (
select distinct
case when sender = 'A'
then receiver
else sender
end res
from test
where 'A' in (sender, receiver)
) sq;
这当然是直接的SQL。不幸的是,我不认识您的模糊化管理器(JPA?),所以您必须进行翻译。或者直接使用原始SQL。