Hibernate 本机查询显示异常
Hibernate native query shows exception
我已经编写了 hibernate 本机查询,用于从 table 获取总用户数和月份。
但它显示:
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 can contain multiple SQLProjection(s),但是每个SQL投影应该与一个且只有一个SQL列相关联。
您 SQLProjection 尝试 select 两列。
尝试用简单的本机查询替换您的 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();
我已经编写了 hibernate 本机查询,用于从 table 获取总用户数和月份。
但它显示:
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 can contain multiple SQLProjection(s),但是每个SQL投影应该与一个且只有一个SQL列相关联。
您 SQLProjection 尝试 select 两列。
尝试用简单的本机查询替换您的 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();