当我为列使用别名时,我得到错误。没有别名,每个人都很好。有什么问题?这是一个简单的示例,但需要在实际项目中使用更多别名来将结果包装在某些非实体类中,但由于此错误而无法使用。怎么解决这个问题?
不工作(在id列上使用别名):
public List<Long> findAll(Long ownerId) {
String sql = "select id as myId from products where ownerId = "+ownerId;
SQLQuery query = getSession().createSQLQuery(sql);
return query.list();
}
错误:
WARN [JDBCExceptionReporter:77]:SQL错误:0,SQLState:S0022错误 [JDBCExceptionReporter:78]:找不到列'id'。
工作(不带别名):
public List<Long> findAll(Long ownerId) {
String sql = "select id from products where ownerId = "+ownerId;
SQLQuery query = getSession().createSQLQuery(sql);
return query.list();
}
答案 0 :(得分:6)
如果您的“产品”已映射,则hibernate可能不知道“myId”,因此无法选择它。 您可以尝试以下方式:
getSession().createSQLQuery(sql).addScalar("myId", Hibernate.LONG)