5

Person次のクラスを想定して、特定のメールアドレスを持つをどのように見つけますか?

public class Person implements Comparable<Person> {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    @Column(name="id")
    private long id = 0;

    @OneToMany(cascade={CascadeType.PERSIST, CascadeType.MERGE, CascadeType.REMOVE}, fetch=FetchType.LAZY)
    private Set<String> email = new HashSet<String>();
}

これを行うのと同じくらい簡単ですか、それとも適切な方法がありますか?

select p from Person p where p.email=:email
4

2 に答える 2

10

それほど簡単ではありません。JPQLは、INこのための演算子を提供します。

select p from Person p, IN(p.email) m where m = :email

「古い」方法(SQLのように読む)は次のようになります。

select p from Person p join p.email m where m = :email
于 2010-08-16T09:49:54.900 に答える
1

SQLは次のようになります。

WHERE email IN ('foo@yahoo.com', 'bar@gmail.com')

残念ながら、私はこれを行う簡単な方法を知りません。生のSQLでこれを行う場合は、2つのステップで行う必要があります。セット内の値ごとにバインドパラメーター?を作成し、セットを反復処理して、各値をバインドパラメーターにバインドします。

私はJPAでそれをきれいに行う方法を知りませんが、それはあなたが探しているべきものです。

于 2010-08-16T09:47:49.553 に答える