我有以下声明。
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
有什么意见吗??请分享想法。
最佳答案
您的查询似乎没问题。列名是否正确? SQLGrammarException 的文档提示:
Implementation of JDBCException indicating that the SQL sent to the database server was invalid (syntax error, invalid object references, etc).
所以语法只是可能的罪魁祸首之一。尝试在生产环境中手动运行查询,看看数据库告诉您什么。
关于java - 使用 ejb3/hibernate 运行查询时出现奇怪的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26980802/