我是HIBERNATE
的新手。我在JSF & Hibernate
创建了一个网络应用。如果我在数据库中有一个表在我的应用程序中没有任何相应的java类,我可以使用Hibernate
来激发对这样的数据库的查询吗?
答案 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]);
}
这将为您提供一个对象数组列表。您可以使用此数组来获取查询的值。
我希望这会对你有所帮助。