假设我有这个实体(用于Hibernate):
@Entity
public class Person {
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
Long id;
@CollectionOfElements
@IndexColumn("phones_index")
Set<String> phones;
}
例如,我想获取其手机中包含“555-1234”的Person实例。 我怎么能对此进行查询?我正在寻找类似的东西:
session.createCriteria(Person.class)./*something*/.add(Restrictions./*something*/"555-1234").list();
答案 0 :(得分: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 :(得分:-1)
我认为您需要Hibernate的Restrictions.in()
方法,该方法将属性名称作为第一个参数,并将数组或对象集合作为第二个参数。
另请参阅:The Javadoc
修改:重新阅读您的问题后,我认为您可以使用任何相关的Restrictions
方法,尤其是eq
:
session.createCriteria(Person.class).add(Restrictions.eq("phones", "555-1234")).list();