代码之家  ›  专栏  ›  技术社区  ›  karlgrz

Hibernate HQL查询:如何将集合设置为查询的命名参数?

  •  63
  • karlgrz  · 技术社区  · 17 年前

    给定以下HQL查询:

    FROM
        Foo
    WHERE
        Id = :id AND
        Bar IN (:barList)
    

    我设定 :id setInteger() 方法

    我想订一套 :barList List 对象,但查看Hibernate文档和方法列表,我看不到使用哪种方法的明显选择。有什么想法吗?

    3 回复  |  直到 14 年前
        1
  •  93
  •   Baztoune Uchenna    15 年前

    使用 Query.setParameterList() , Javadoc here

    有四种变体可供选择。

        2
  •  33
  •   Steve Kuo    17 年前

    我不确定HQL,但在JPA中,您只需调用查询的 setParameter 使用参数和集合。

    Query q = entityManager.createQuery("SELECT p FROM Peron p WHERE name IN (:names)");
    q.setParameter("names", names);
    

    names 是您正在搜索的名称的集合

    Collection<String> names = new ArrayList<String();
    names.add("Joe");
    names.add("Jane");
    names.add("Bob");
    
        3
  •  1
  •   xjodoin    14 年前

    在里面 TorpedoQuery 看起来像这样

    Entity from = from(Entity.class);
    where(from.getCode()).in("Joe", "Bob");
    Query<Entity> select = select(from);