我有以下声明。
result = (BigDecimal)m_EntityManager.createNativeQuery(query).getSingleResult();
查询是:
从myTable中选择sum(field5),其中field1 ='?#This'和
field2 = 1234和field3 IN(' 7183328608',' 7187931685',' 7187931686')
Hibernate版本是:3.2.1ga
当针对开发和QA服务器运行时,我们没有问题 但是,在部署到生产时,会发现异常/错误。
ERROR: [BillSessionEJB: ] Error in runSingleResultNativeQuery(): running query:
select sum(field5) from myTable where field1 = '?#This' and
field2=1234 and field3 IN ('7183328608','7187931685','7187931686')
javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not
execute query javax.persistence.PersistenceException:
org.hibernate.exception.SQLGrammarException: could not execute query
at org .hibernate.ejb.AbstractEntityManagerImpl.throwPersistenceException(AbstractEntityManagerImpl.java:629)
at org.hibernate.ejb.QueryImpl.getSingleResult(QueryImpl.java:99)
at com.broadview.billing.billingdataservices.beans.BillSessionEJB.runSingleResultNativeQuery(BillSession
开发和QA服务器正在运行SQLSERVER 2012,生产正在运行2005.是否存在差异?
我唯一想到的是为列总和命名。
as 'Total' .. in select
任何评论,??请分享想法。
答案 0 :(得分:1)
您的查询似乎没问题。列名是否正确? SQLGrammarException的文档提示:
实现JDBCException,指示发送到数据库服务器的SQL无效(语法错误,无效的对象引用等)。
所以语法只是可能的罪魁祸首之一。尝试在生产中手动运行查询,并查看数据库告诉您的内容。