2012-01-09 79 views
1

使用hibernate從數據庫中獲取布爾數據時SQL查詢會給出以下錯誤跟蹤。在本地計算機中,它工作正常。但是在將它部署到GAE時出現錯誤。無法使用hibernate從數據庫中獲取布爾值createSQLQuery

javax.faces.el.EvaluationException: org.hibernate.PropertyAccessException: IllegalArgumentException occurred while calling setter of com.fetchinglife.domain.data.dto.EmployeeDTO.extraTask 

在我EmployeeDTO.java

private boolean extraTask; 

//getters and setters 

public boolean getExtraTask() 
    { 
     return extraTask; 
    } 
public void setExtraTask(boolean extraTask) 
    { 
     this.extraTask = extraTask; 
    } 

休眠createSQLQuery是什麼樣子,

Query query = session.createSQLQuery("select e.firstName, e.extraTask from Employee as e where e.id= :userId").setResultTransformer(new AliasToBeanResultTransformer(EmployeeDTO.class)); 
query.setParameter("userId", userId); 

回答

0

我的猜測是,由於您使用SQL而不是HQL,Hibernate無法使用它的映射信息及其數據庫方言,將數據庫中的內容轉換爲布爾值。你爲什麼不使用HQL進行這樣的查詢? HQL與SQL查詢相同:

session.createQuery("select e.firstName, e.extraTask from Employee as e where e.id= :userId") 
+0

加入兩個表也是一樣的我們如何使用它與hibernate createSQLQuery? – NaaN 2012-01-09 09:28:41

+0

HQL完全能夠在實體之間進行連接。閱讀http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#queryhql – 2012-01-09 09:33:35