使用ejb3 / hibernate运行查询的奇怪错误

时间:2014-11-17 19:53:32

标签: java sql-server hibernate

我有以下声明。

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

任何评论,??请分享想法。

1 个答案:

答案 0 :(得分:1)

您的查询似乎没问题。列名是否正确? SQLGrammarException的文档提示:

  

实现JDBCException,指示发送到数据库服务器的SQL无效(语法错误,无效的对象引用等)。

所以语法只是可能的罪魁祸首之一。尝试在生产中手动运行查询,并查看数据库告诉您的内容。