2014-11-05 58 views
0

結果的轉化過程中,我發現了以下錯誤: -HibernateException的 - 不能實例化resultclass

Exception in thread "main" org.hibernate.HibernateException: Could not instantiate resultclass: com.javatpoint.mypackage.EmployeeDTO 
    at org.hibernate.transform.AliasToBeanResultTransformer.transformTuple(AliasToBeanResultTransformer.java:71) 
    at org.hibernate.hql.HolderInstantiator.instantiate(HolderInstantiator.java:69) 
    at org.hibernate.loader.custom.CustomLoader.getResultList(CustomLoader.java:330) 
    at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2095) 
    at org.hibernate.loader.Loader.list(Loader.java:2090) 
    at org.hibernate.loader.custom.CustomLoader.list(CustomLoader.java:289) 
    at org.hibernate.impl.SessionImpl.listCustomQuery(SessionImpl.java:1695) 
    at org.hibernate.impl.AbstractSessionImpl.list(AbstractSessionImpl.java:142) 
    at org.hibernate.impl.SQLQueryImpl.list(SQLQueryImpl.java:150) 
    at com.javatpoint.mypackage.StoreData.unionqry(StoreData.java:54) 
    at com.javatpoint.mypackage.StoreData.main(StoreData.java:19) 


public static void unionqry(){ 
    Session session = new AnnotationConfiguration().configure() 
      .buildSessionFactory().openSession(); 

    Transaction t = session.beginTransaction(); 

    String sql = "SELECT firstName, lastName FROM EMP1000 union Select firstName, lastName from Emp1000"; 
    //String sql = "SELECT a.id,b.emp_dept FROM test.emp1000 a inner join emp_dept b on a.id = b.id"; 
    SQLQuery query = session.createSQLQuery(sql); 
    List result = query.addScalar("firstName").addScalar("lastName").setResultTransformer(Transformers.aliasToBean(EmployeeDTO.class)).list(); 
    Employee e = (Employee)result.get(0); 

Tranformclass:

class EmployeeDTO{ 
    private String firstName; 
    private String lastName; 
    public EmployeeDTO(){} 

    public String getFirstName() { 
     return firstName; 
    } 
    public void setFirstName(String firstName) { 
     this.firstName = firstName; 
    } 
    public String getLastName() { 
     return lastName; 
    } 
    public void setLastName(String lastName) { 
     this.lastName = lastName; 
    } 
} 
+0

顯示你的hibernate映射文件 – Chaitanya 2014-11-05 14:44:33

+1

我修正了這個問題..該類需要聲明爲public ... – user1050619 2014-11-05 15:15:33

+0

可能重複[org.hibernate.HibernateException:無法實例化resultclass](http://stackoverflow.com/問題/ 11891063/ORG-休眠-HibernateException的 - 可能 - 而不是實例化,resultclass) – 2014-11-06 16:54:43

回答

0

看來你正在使用註解的映射,而不是使用XML映射。

如果比你應該提供的映射信息在你的POJO類(EmployeeDTO)

檢查這些例子的情況: example-1                           example-2  作進一步的解釋。