我知道这个问题已经提出了很多,但是我似乎遇到了另一个问题。我看到Hibernate
中有一个bug,它与SumFunction忽略了自定义用户类型有关,但是据我所知,我没有使用自定义用户类型。我基本上是在尝试创建一个新对象,该对象是现有映射bean的汇总,但是我收到了NullPointerException
针对某些Hibernate方言函数的。我尝试将Double和BigDecimal都用作value
字段类型,但在部署时都向我提供了相同的错误消息。请帮忙!
这是一些代码:
映射的豆:
@Entity
@Table(name = "v_summary_report")
public class SummaryReportView implements java.io.Serializable {
private static final long serialVersionUID = 1L;
@Id
@Column(name = "id")
private String id;
@Column(name = "region")
private String region;
@Column(name = "market")
private String market;
@Column(name = "proj_year_month")
private String projectionYearMonth;
@OneToOne(cascade={CascadeType.DETACH})
@JoinColumn(name="attrib_id", referencedColumnName="attrib_id")
private Attribute attribute;
@Column(name = "total_value")
private BigDecimal value;
/* other stuff */
}
命名查询被调用:
@NamedQuery(name = "findSummaryReportTotalByRegion", query = " SELECT new com.rac.projections.bean.SummaryReportTotal(srv.projectionYearMonth, srv.attribute, sum(value)) from SummaryReportView srv where srv.region = :region group by srv.projectionYearMonth, srv.attribute"),
Bean总定义:
public class SummaryReportTotal {
private String projectionYearMonth;
private Attribute attribute;
private BigDecimal value;
public SummaryReportTotal() {
super();
}
public SummaryReportTotal(String projectionYearMonth, Attribute attribute, BigDecimal value) {
this.projectionYearMonth = projectionYearMonth;
this.attribute = attribute;
this.value = value;
}
/* other stuff */
}
堆栈跟踪 :
Caused by: java.lang.NullPointerException
at org.hibernate.dialect.function.StandardAnsiSqlAggregationFunctions$SumFunction.determineJdbcTypeCode(StandardAnsiSqlAggregationFunctions.java:145)
at org.hibernate.dialect.function.StandardAnsiSqlAggregationFunctions$SumFunction.getReturnType(StandardAnsiSqlAggregationFunctions.java:157)
at org.hibernate.hql.internal.ast.util.SessionFactoryHelper.findFunctionReturnType(SessionFactoryHelper.java:406)
at org.hibernate.hql.internal.ast.tree.AggregateNode.getDataType(AggregateNode.java:83)
at org.hibernate.hql.internal.ast.tree.ConstructorNode.resolveConstructorArgumentTypes(ConstructorNode.java:166)
at org.hibernate.hql.internal.ast.tree.ConstructorNode.prepare(ConstructorNode.java:141)
at org.hibernate.hql.internal.ast.HqlSqlWalker.processConstructor(HqlSqlWalker.java:1019)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectExpr(HqlSqlBaseWalker.java:2150)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectExprList(HqlSqlBaseWalker.java:2016)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectClause(HqlSqlBaseWalker.java:1451)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.query(HqlSqlBaseWalker.java:571)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.selectStatement(HqlSqlBaseWalker.java:299)
at org.hibernate.hql.internal.antlr.HqlSqlBaseWalker.statement(HqlSqlBaseWalker.java:247)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.analyze(QueryTranslatorImpl.java:248)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.doCompile(QueryTranslatorImpl.java:183)
at org.hibernate.hql.internal.ast.QueryTranslatorImpl.compile(QueryTranslatorImpl.java:136)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:105)
at org.hibernate.engine.query.spi.HQLQueryPlan.<init>(HQLQueryPlan.java:80)
at org.hibernate.engine.query.spi.QueryPlanCache.getHQLQueryPlan(QueryPlanCache.java:168)
at org.hibernate.internal.SessionFactoryImpl.checkNamedQueries(SessionFactoryImpl.java:1032)
at org.hibernate.internal.SessionFactoryImpl.<init>(SessionFactoryImpl.java:506)
at org.hibernate.cfg.Configuration.buildSessionFactory(Configuration.java:1750)
at org.hibernate.ejb.EntityManagerFactoryImpl.<init>(EntityManagerFactoryImpl.java:94)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:905)
at org.hibernate.ejb.Ejb3Configuration.buildEntityManagerFactory(Ejb3Configuration.java:890)
at org.hibernate.ejb.HibernatePersistence.createContainerEntityManagerFactory(HibernatePersistence.java:74)
at org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean.createNativeEntityManagerFactory(LocalContainerEntityManagerFactoryBean.java:225)
at org.springframework.orm.jpa.AbstractEntityManagerFactoryBean.afterPropertiesSet(AbstractEntityManagerFactoryBean.java:308)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1477)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1417)
... 45 more
如果value
以表别名作为前缀,我不会感到惊讶,因为其他字段可以解决该问题
... sum(srv.value) ...
有时,HQL解析器在解析步骤中将标识符解析为有效,但是在执行期间会因奇怪的异常而失败。
问题内容: 我知道这个问题已经提出了很多,但是我似乎遇到了一个不同的问题。我看到Hibernate中有一个错误,该错误与SumFunction忽略了自定义用户类型有关,但据我所知,我没有使用自定义用户类型。我基本上是试图创建一个新对象,该对象是现有映射bean的汇总,但是我收到了针对某些Hibernate方言函数的。我尝试将Double和BigDecimal都用作字段类型,但在部署时都向我提供了相
问题内容: 试图从HQL查询创建对象,但无法弄清楚我在做什么错。 查询: (或者我应该使用新的MyCustomList(product.code,SUM(…,即使未映射)?)现在我想将此返回的列表转换为类似的对象: 检索数据: 使用Play框架 问题答案: 我认为第15.6节。select子句涵盖您要实现的目标: 15.6。选择子句 … 查询可以将多个对象和/或属性作为类型数组返回 : 或作为:
是否可以使用更新对象的属性? 类似于: 我试过: 还有这个: 第一个会导致语法错误,而第二个则什么也不做。有什么想法吗?
第2章“有关对象的思考”一节开始了关于电梯模拟程序的面向对象设计(OOD)的第一个阶段,即确定实现电梯模拟程序所需要的对象。作为入手点,可以列出问题陈述中的名词,这样就可 以发现电梯模拟程序中的对象有电梯、人、楼层、大楼、各种按钮、时钟、电灯与电铃等等。 第1章介绍对象时曾经指出过对象有属性和行为。对象属性在C++程序中表示为数据,对象行为在C++程序中表示为函数。本节要确定实现电梯模拟程序所需对
本节和“有关对象的思考”的下几节将介绍建立电梯模拟程序时的有趣问题和实际遇到的挑战。 第1章到第5章要完成面向对象设计(OOD)的各个步骤。从第6章开始,我们要用C++面向对象编程(OOP)技术实现电梯模拟程序。目前这些应用比较复杂,但不必在意,这章只考虑这个问题的一小部分。 问题 公司要建立一幢两层的办公大楼并装上“最新”的电梯。公司要求开发一个面向对象的软件模拟程序,模拟电梯的操作,确定这个电
问题内容: 根据Hibernate文档的这一部分,我应该能够查询HQL中的任何Java类。 http://docs.jboss.org/hibernate/core/3.3/reference/en/html/queryhql.html#queryhql- polymorphism 不幸的是,当我运行此查询时… 我收到消息“未映射事务[[从事务trans,其中trans.envelopeId =: