2014-03-12 55 views

回答

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]); 
    } 

這會給你一個對象數組的列表。您可以使用此數組來獲取查詢的值。

我希望這會幫助你。

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()); 
    } 

這是我發現解決您的問題的最佳方式。