2009-07-07 1 views
5

のは、私は(Hibernate用)のこのエンティティがあるとしましょう:Hibernate:CollectionOfElements内の指定された要素を含むエンティティを照会しますか?

@Entity 
public class Person { 
    @Id 
    @GeneratedValue(strategy = GenerationType.AUTO) 
    Long id; 

    @CollectionOfElements 
    @IndexColumn("phones_index") 
    Set<String> phones; 
} 

は例えば、私は自分の携帯電話が「555-1234」を含む場合パーソンのインスタンスを取得したいです。 これについての質問はどうすればできますか?私はあなたがHibernateのRestrictions.in()最初の引数としてプロパティ名を取る方法、および第二などのオブジェクトの配列またはコレクションのいずれかをしたいと思います

session.createCriteria(Person.class)./*something*/.add(Restrictions./*something*/"555-1234").list(); 

答えて

9

こんにちはすることができますこの1つを試してください

String phone = "555-1234"; 
Person person= (Person) session.createQuery("from Person p join p.phones pl where pl = :phone").setString("phone", phone).uniqueResult(); 
-1

:私はのようなものを探しています。

も参照してください:The Javadoc

編集:時再読み込みあなたの質問を、私は、あなたが特に、関連するRestrictionsのいずれかの方法を使用することができると思いeq

session.createCriteria(Person.class).add(Restrictions.eq("phones", "555-1234")).list(); 
+0

誰でもテストしましたか? – whiskeysierra

+0

@ウィリ:私のために働かない、受け入れられた答えはします。 また、これに関する休止状態バグトラッキングシステムに未解決の問題があります。http://opensource.atlassian.com/projects/hibernate/browse/HHH-869 –

+0

動作しません、plz http://opensource.atlassian.com/を参照してください。プロジェクト/休止/ブラウズ/ HHH-869 –

関連する問題