使用列上的别名查询会出错

当我为列使用别名时我得到错误。 没有别名,每个人都很好。 有什么问题? 这是一个简单的示例,但需要在实际项目中使用更多别名来将结果包装在某些非实体类中,但由于此错误而无法使用。 怎么解决这个?

不工作 (在id列上使用别名):

public List 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 findAll(Long ownerId) { String sql = "select id from products where ownerId = "+ownerId; SQLQuery query = getSession().createSQLQuery(sql); return query.list(); } 

如果您的“产品”已映射,则hibernate可能不知道“myId”,因此无法选择它。 您可以尝试以下方法:

 getSession().createSQLQuery(sql).addScalar("myId", Hibernate.LONG)