无法使用hibernate从数据库中获取布尔值createSQLQuery
问题描述:
使用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);
答
我的猜测是,由于您使用SQL而不是HQL,Hibernate无法使用它的映射信息及其数据库方言,将数据库中的内容转换为布尔值。你为什么不使用HQL进行这样的查询? HQL与SQL查询相同:
session.createQuery("select e.firstName, e.extraTask from Employee as e where e.id= :userId")
加入两个表也是一样的我们如何使用它与hibernate createSQLQuery? – NaaN 2012-01-09 09:28:41
HQL完全能够在实体之间进行连接。阅读http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html_single/#queryhql – 2012-01-09 09:33:35