Цель состоит в том, чтобы получить всех пользователей (не сообщений), которые отправили сообщение определенному пользователю (текущему вошедшему в систему пользователю) или получили сообщение от этого пользователя (даже если они еще не ответили) , Я перепробовал много запросов, но безрезультатно. (У меня есть идентификатор вошедшего в систему пользователя).
У вас есть идеи? Я предполагаю, что мне нужно выполнить объединение классов Message и RegisteredUser, но я не уверен, как это будет работать, поскольку в сообщении есть «отправитель» и «получатель», что делает запрос немного более сложным.
Класс RegisteredUser (не имеет ссылки на Сообщение):
@Entity
@Table(name = "USER")
public class RegisteredUser implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
Класс сообщения:
@Entity
@Table(name = "MESSAGE")
public class Message implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
int id;
@ManyToOne
@JoinColumn(name = "receiverId")
RegisteredUser receiver;
@ManyToOne
@JoinColumn(name = "senderId")
RegisteredUser sender;
Я использую jpa 2.0 и hibernate 3.5.6.
Спасибо!
// РЕДАКТИРОВАТЬ - Решение, благодаря Андрею
"select distinct u from RegisteredUser u where u in (select m1.sender from Message m1 join m1.receiver r where r.id = " + user.getId() + ") or u in (select m2.receiver from Message m2 join m2.sender s where s.id = " + user.getId() + ")"