无法使用hibernate createSQLQuery从数据库中获取布尔值

时间:2012-01-09 09:12:00

标签: java sql hibernate google-app-engine

使用hibernate SQL查询从数据库中获取布尔数据时会产生以下错误跟踪。在本地计算机中它工作正常。但是当它部署到GAE时会出错。

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

hibernate 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);

1 个答案:

答案 0 :(得分:0)

我的猜测是,由于您使用SQL而不是HQL,Hibernate无法使用其映射信息及其数据库方言将您在数据库中的内容转换为布尔值。为什么不使用HQL进行此类查询? HQL与SQL查询相同:

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