2009-07-07 64 views
5

比方说,我有这个实体(休眠):Hibernate:查询包含CollectionOfElements中指定元素的实体吗?

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

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

例如,我想人的情况下,他们的手机包含“555-1234”。 我该如何对此进行查询?我在寻找类似的东西:

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

回答

9

嗨,你可以试试这个

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

我想你想Hibernate的Restrictions.in()方法,它需要一个属性名作为第一个参数,并且或者对象作为第二个数组或收藏。

参见:The Javadoc

编辑:,在重读你的问题,我想你可以使用任何的相关Restrictions方法,特别是eq

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

任何人都测试过它? – whiskeysierra 2010-01-10 13:53:10

相关问题