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

标签 java sql hibernate

当我为列使用别名时出现错误。没有别名,everytinig 工作得很好。那有什么问题?这是一个简单的例子,但在实际项目中需要使用更多的别名来将结果包装在一些非实体类中,但由于这个错误而不能。如何解决这个问题?

不工作(在 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 Error: 0, SQLState: S0022 ERROR [JDBCExceptionReporter:78] : Column 'id' not found.

正在工作(没有别名):

public List<Long> 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)

关于java - 在列上使用别名的查询会出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7118703/

相关文章:

java - 如何在事件分派(dispatch)线程中等待任务完成然后继续?

java - 从充满 POJO 的 ArrayList 中删除重复项

java - ORDER BY 与 GROUP BY 查询,使用 JPA 和 Hibernate

sql - OBJECT_ID 在 SQL Server 中有什么作用?

mysql - 如何在sql中使用update来放置时间戳

java - 使用什么: sql migration or entity setups in Spring/Hibernate?

java - 如何为部署到 WAS 8 的 spring 4/hibernate 4.3 应用程序配置事务管理

java - 如何更改 Spring Cloud Stream 配置中所有 RabbitMQ 消费者的默认恢复间隔?

php - 带有 WHERE 子句的 MySQL 语法错误

java - 通过在 Java 中组合另一个表中的一列来创建表