通过sql语句查询出来的结果字段没有到对应实体类时的处理方法

通过sql语句查询出来的结果字段没有到对应实体类时的处理方法,对于Person类获取用户第一个名字和年龄两个字段,常见的有两种方式:

  1、在创建一个与查询结果字段对应的类,然后通过构造函数实现:

     Query query = em.createQuery("select new com.ejb.bean.SimplePerson(p. firstname, p.age) from Person p ");

  2、通过sql语句将查询结果放到Object数组中,然后再获取一个List集合,里面存放的是Object数组:  

 Query query = em.createNativeQuery("select p.firstname,p.age from person as p");
 List list = query.getResultList();
 for (int i = 0; i < list.size(); i++) {
    Object[] obj = (Object[]) list.get(i);
    System.out.println(" firstname: "+ obj[0]+"  age: "+obj[1]);
 }

   综上所述:建议还是使用第一种(字段比较多),因为它更符合面向对象的思想,获取数据也比较方便。

public class Person {    
    private String firstname;
    private String secondname;
    private int age;
    public String getFirstname() {
        return firstname;
    }
    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }
    public String getSecondname() {
        return secondname;
    }
    public void setSecondname(String secondname) {
        this.secondname = secondname;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

 

    解决方案一,按照Object[]数据取出数据,然后自己组bean
  解决方案二,对每个表的bean写构造函数,比如表一要查出field1,field2两个字段,那么有一个构造函数就是Bean(type1 filed1,type2 field2) ,然后在hql里面就可以直接生成这个bean了。具体怎么用请看相关文档,我说的不是很清楚。

 

 

 

posted @ 2013-11-18 10:41  若 ♂ 只如初见  阅读(2916)  评论(0编辑  收藏  举报