Java将结果集转换为实体

时间:2014-04-29 13:46:09

标签: java sql jpa

我想获得一个特定的" Type"喜欢"人"从我的JPAConnector.class通过SQL查询(executeQuery方法)。

一切正常,但是如果我没有使用类似&#34;来自Person p&#34;的SELECT p的SQL查询。得到所有,例如<​​/ p>

SELECT p.name,p.age from Person p

然后我得到一个Resulttype Object[]而不是Person[]

我知道,如果我不使用每个字段,那么我的对象不是来自Person,而是如果我执行这样的查询

SELECT p.name AS Name, p.age AS Age, p.location AS Location FROM Person p

然后我没有得到一个Person对象,尽管我使用了Person的所有字段。

我希望你理解我的问题,我的英语不好。对不起,我很抱歉。

问候 雷

编辑:我的问题的背景是,我想平均所有列,其中ID列重复...但这与我的问题没有任何关系......(仅用于了解)< / p>

2 个答案:

答案 0 :(得分:1)

您可以使用构造函数查询来获得所需的结果。

SELECT new Person(p.name, p.page) from Person p

确保您的Person实体具有构造函数

public Person(String name, int age){}

答案 1 :(得分:0)

使用实体管理器

在JPA中使用如下所示
TypedQuery<Country> query =
      em.createQuery("SELECT p FROM Person p", Person.class);
  List<Person> results = query.getResultList();

then you can access each attribute easily using person as below

  for (Person p : results) {
      System.out.println(p.getName());
//other attributes access
  }