【问题标题】:Hibernate: Query entities which contain a specified element in a CollectionOfElements?Hibernate:查询包含 CollectionOfElements 中指定元素的实体?
【发布时间】:2010-11-08 14:44:38
【问题描述】:

假设我有这个实体(用于 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();

【问题讨论】:

    标签: java database hibernate collections


    【解决方案1】:

    你好,你可以试试这个

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

    【讨论】:

      【解决方案2】:

      我认为您需要 Hibernate 的 Restrictions.in() 方法,该方法将属性名称作为第一个参数,将数组或对象集合作为第二个参数。

      另请参阅:The Javadoc

      编辑:重新阅读您的问题后,我认为您可以使用任何相关的Restrictions 方法,尤其是eq

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

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-08
      • 1970-01-01
      • 2015-03-03
      • 2012-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多