java - Hibernate native 查询显示异常

标签 java sql hibernate orm hibernate-criteria

我编写了 Hibernate native 查询,用于从表中获取总用户和月份。
但它显示:

exception:Operand should contain 1 column(s)
org.hibernate.exception.DataException: could not execute query

有人可以帮我解决这个问题吗:

  c.setProjection(Projections.projectionList()
     .add(Projections.sqlProjection("(select count(*), MONTH(Stored) from adbtbl_stat " 
     + "where Activity = 89 and YEAR(Stored) = 2015) as Count, month",
     new String[] { "Count", "month" }, new Type[] { LongType.INSTANCE, StringType.INSTANCE }))
     .add(Projections.groupProperty(month(stored))));

最佳答案

一个ProjectionList可以包含多个SQLProjection(s) ,但每个 SQLProjection 应该与一个且仅一个 SQL 列相关联。

您 SQLProjection 尝试选择两列。

尝试用简单的 native 查询替换您的 Criteria 查询:

Long activity = ...;
int year = ...;

Query q = entityManager.createNativeQuery(
    "select count(*) as Count, MONTH(Stored) as Month " +
    "from adbtbl_stat " +
    "where Activity = :activity and YEAR(Stored) = :year"
);
q.setParameter("activity", activity);
q.setParameter("year", year);
List<Object[]> result = (List<Object[]>) q.getResultList();

关于java - Hibernate native 查询显示异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27915161/

相关文章:

java - 如何从绑定(bind)的 JTable 中删除行?

mysql - 查找空闲时间

java - Hibernate 类未使用 Eclipse Juno 和 GWT 导入 : LockMode, SessionFactory、Criterion

java - 如何使用父实体的组合键进行 JPA @OneToMany 单向映射?

java - 在 hibernate 中连接表的方法应该是什么

java - 我们可以在 java 中使用 php web 服务吗?

java - 迁移我的应用程序以使用 OSB

java - Maven 测试资源在目标中为空白

asp.net - 查找列中不同值的计数

sql - 不是 GROUP BY 表达式