2012-01-09 85 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