java - 使用 ejb3/hibernate 运行查询时出现奇怪的错误

标签 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

有什么意见吗??请分享想法。

最佳答案

您的查询似乎没问题。列名是否正确? 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/

相关文章:

c++ - SQL Server 数据库出现 ODBC 错误 "String data, right truncation State code: 22001"

即使文件存在并且位于同一目录中,Java FileNotFound 错误?我该如何解决?

java - 使用无限通配符会捕获错误的情况,但只有在使用原始类型时才会被标记为警告

java - 使用 MVC 绘制同心/旋转图形

mysql - 在表中查找过去几周没有事件的记录

sql-server - 如何在 MS SQL-Server 上查找具有特殊字符(如 'José')的名称

java - 如何删除 json 中不需要的细节

java - 使用 Hibernate 归档数据的最佳方法

java - Javac StringBuilder/StringBuffer 优化是什么时候引入的?

java - 使用 FK "reuse"保存实体