0
特定のユーザ(現在ログインしているユーザ)にメッセージを送信したすべてのユーザ(メッセージではない)を取得するか、このユーザからメッセージを受信したまだ返信していない)。私は多くのクエリを試したが、役に立たない。 (私はログインしているユーザーのIDを持っています)。JPA/Hibernate Join Query
ご意見はありますか?私は、メッセージ& RegisteredUserクラスに参加する必要があると仮定していますが、メッセージに「送信者」の&「受信者」があり、クエリがもう少し複雑になるため、どのように動作するのかわかりません。
RegisteredUserクラス(メッセージへの参照を持っていません):
@Entity
@Table(name = "USER")
public class RegisteredUser implements Serializable {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private int id;
Messageクラス:
@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を使用して3.5.6を休止しています。
ありがとうございます!
// EDIT - ??ソリューション、アンドレイ
"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() + ")"
のおかげで1の値は、&2は何でしょうか?ログインしたユーザーのIDがgetId()によって取得されたと仮定すると、?1または/および?2をgetId()に設定すると、通信したユーザーのリストまたは彼と通信したユーザーのリストではなく、 – Vladimir
基本的には、sender.id = getId()のときにreceiver.id = getid()と受信機を返す必要があります。 – Vladimir
何かこれがうまくいくかどうかはわかりません。 mホームから):RegisteredUserから別のuを選択して下さい。 (メッセージm1のm1.senderをm1.receiver rに追加します。r.id = "+ getId()+")またはuを入力します(メッセージからm2.receiverを選択します)。 m2)を入力します。ここでs.id = "+ getId()+") " – Vladimir