Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JPA多选查询_Jpa_Jpa 2.0 - Fatal编程技术网

JPA多选查询

JPA多选查询,jpa,jpa-2.0,Jpa,Jpa 2.0,我有一个这样的查询,如何从列表中获取实体类型?它像对象一样返回,但当我向我的实体投射时,它不会投射 我的表格:B(id\u A,id\u C),A(id\u A,名称,位置)C(id\u C,…) 另外,这是进行查询的好方法吗?如果选择多个值,您将返回一个列表 看,, 如果需要对象,请使用 select s from B b, A s where b.bPK.id_A=s.id_A and b.PK.id_C= :idEvent 此外,连接通常通过关系完成 select s from A s

我有一个这样的查询,如何从列表中获取实体类型?它像对象一样返回,但当我向我的实体投射时,它不会投射

我的表格:
B(id\u A,id\u C),A(id\u A,名称,位置)C(id\u C,…)


另外,这是进行查询的好方法吗?

如果选择多个值,您将返回一个列表

看,,

如果需要对象,请使用

select s from B b, A s where b.bPK.id_A=s.id_A and b.PK.id_C= :idEvent
此外,连接通常通过关系完成

select s from A s join s.b b where b.PK.id_C= :idEvent

第一:你的结果“公司列表”是什么样的?从您的查询中,您将得到一个列表列表,并且必须说

    companyList.get(i).get(0) // for name
    companyList.get(i).get(1) // for location
为了便于使用,您也可以在开始时投入更多的精力。然后你就可以有一个实用的,面向对象的结构

为此,请使用一种DTO(数据传输对象),其类可能如下所示:

    class CompanyDTO{

      public CompanyDTO(String name, String location){
        this.name = name;
        this.location = location;
      }

      private String name;
      private String location;

      public String getName(){
        return this.name;
      }
      public String getLocation(){
        return this.location;
      }
    }
然后,您可以在查询中说:

    select new CompanyDTO (s.name, s.location) 
    from B b, A s 
    where b.bPK.id_A = s.id_A and b.PK.id_C= :idEvent
然后你可以说:

    List<CompanyDTO> companyList = queryGetCompany.getResultList();
或其他列表操作。您将从列表中获取每个DTO,并可以调用这些对象上的get方法。

这对我很有用

IIRC,您可以执行
从EntityA o1、EntityB o2、EntityC o3中选择o1、o2、o3,其中….
,结果将是一个
列表,其中数组内容将包含
o1、o2、o3

public List<Object[]> findXXX(final String param) {
    final TypedQuery<Object[]> query = this.em.createNamedQuery(
            "package.entity.function", Object[].class);
    query.setParameter("variable", variable);

    return query.getResultList();
}
公共列表findXXX(最终字符串参数){
final TypedQuery query=this.em.createNamedQuery(
“包.实体.函数”,对象[].类);
query.setParameter(“变量”,变量);
返回query.getResultList();
}
    for (CompanyDTO company : companyList){
      System.out.print(company.getName() + ", ");
      System.out.println(company.getLocation());
    }
public List<Object[]> findXXX(final String param) {
    final TypedQuery<Object[]> query = this.em.createNamedQuery(
            "package.entity.function", Object[].class);
    query.setParameter("variable", variable);

    return query.getResultList();
}