在Hibernate中创建一个数据库查询,这不是一个实体

时间:2014-03-12 12:32:23

标签: database hibernate entity

我是HIBERNATE的新手。我在JSF & Hibernate创建了一个网络应用。如果我在数据库中有一个表在我的应用程序中没有任何相应的java类,我可以使用Hibernate来激发对这样的数据库的查询吗?

2 个答案:

答案 0 :(得分:1)

嘿您还可以使用org.hibernate.transform.ResultTransformer接口将获取的对象转换为POJO

public class MyResultTransformer implements ResultTransformer {

@Override
public List<Employee> transformList(List arg0) {
    List<Employee> employees = new ArrayList<Employee>();
    for (Object employee : arg0) {
        employees.add((Employee) employee);
    }
    return employees;
}

@Override
public Employee transformTuple(Object[] arg0, String[] arg1) {
    System.out.println("MyResultTransformer.transformTuple()");
    Employee tempEmp = new Employee();
    tempEmp.setEmployee_id((BigInteger) arg0[0]);
    return tempEmp;
}

}

POJO

public class Employee {

private BigInteger employee_id;

public BigInteger getEmployee_id() {
    return employee_id;
}

public void setEmployee_id(BigInteger employee_id) {
    this.employee_id = employee_id;
}

}

  Query query=session.createSQLQuery("SELECT * FROM employeedetail");
     query.setResultTransformer(new MyResultTransformer());
     List<Employee> employees=query.list();
     for (Employee employee : employees) {
         System.out.println(employee.getEmployee_id());
    }

这是我找到解决问题的最好方法。

答案 1 :(得分:0)

嘿,而不是使用HQL,您可以创建SQL查询

Configuration configuration = new Configuration();
        configuration.configure();
     SessionFactory sessionFactory = configuration.buildSessionFactory();
     Session session=sessionFactory.openSession();
     List<Object[]> lists=session.createSQLQuery("SELECT * FROM employee ").list();
     for (Object[] employee : lists) {
        System.out.println(employee[0]+"  "+employee[1]);
    }

这将为您提供一个对象数组列表。您可以使用此数组来获取查询的值。

我希望这会对你有所帮助。