我如何用UNION替换SQL查询以使用JPA接收相同的响应?



我在为我的聊天应用程序从数据库中获得不同的发送者和接收者时遇到了一些麻烦:

这是我的消息模型:

@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的身份登录,数据库如下:

tbody> <<tr>BD
发送方接收方
B
C

根据目标值的指定,可以选择senderreceiver。(见演示)

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。

最新更新