基本質問:
ManyToOneフィールドxを持つエンティティBが別のエンティティAにリンクされている場合、xフィールドにAを持つBのすべてのインスタンスを取得するにはどうすればよいですか?具体的には
JPA ManytoOne関係でクエリを作成する方法は?
:
は以下のentites考えてみましょう:私はすでにこのクエリはここ
Query query = em.createQuery("SELECT m from Message m WHERE m.owner = :us");
を用意してい
public class User {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@Column(name = "USER_ID")
private Key id;
@OneToMany(mappedBy = "owner", cascade = CascadeType.ALL)
private List<Message> messages;
}
ic class Message {
@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
@Column (name="MESSAGE_ID")
private Key id;
@ManyToOne(fetch = FetchType.LAZY)
private User owner;
private int status;
}
は、私が構築したいメソッドのためのAPIです。
入力:ユーザーu、ステータスs
出力:所有者uとステータスsのすべてのメッセージのリスト。
私はEntityMenagerを使用してクエリを作成するはずですが、適切な構文は何ですか?私はその部分に何を入れるのですか?(* "メッセージをどこから出すのですか?オーナー= _ AND status =" + status *)。私はこの試みたとき
:あなたは「を使用してオブジェクトフィールドに対してクエリを実行することができます....
グレート、今私は、このメッセージが表示されます:「WHERE m.owner.username =メッセージmから選択します。サブオブジェクトが埋め込まれている場合のみ、サブオブジェクトのプロパティを参照することができます。OWNERID」 –
どのような種類のオブジェクトは "username"ですか? – Fil
"username"は、ユーザーエンティティオブジェクトごとに一意のStringです。ありがとう! –