java - 执行hibernate查询时出错

标签 java mysql hibernate jboss jboss5.x

执行获取 HQL 查询时出现异常。该查询大部分时间都有效,但有时会显示此异常

数据库为MySQL,使用的服务器为JBoss 5.1.0 GA

显示的错误是:

org.hibernate.exception.GenericJDBCException: could not execute query at org.hibernate.exception.SQLStateConverter.handledNonSpecificException(SQLStateConverter.java:126) at org.hibernate.exception.SQLStateConverter.convert(SQLStateConverter.java:114) at org.hibernate.exception.JDBCExceptionHelper.convert(JDBCExceptionHelper.java:66) at org.hibernate.loader.Loader.doList(Loader.java:2231) at org.hibernate.loader.Loader.listIgnoreQueryCache(Loader.java:2125) at org.hibernate.loader.Loader.list(Loader.java:2120) at org.hibernate.loader.hql.QueryLoader.list(QueryLoader.java:401) at org.hibernate.hql.ast.QueryTranslatorImpl.list(QueryTranslatorImpl.java:361) at org.hibernate.engine.query.HQLQueryPlan.performList(HQLQueryPlan.java:196) at org.hibernate.impl.SessionImpl.list(SessionImpl.java:1148) at org.hibernate.impl.QueryImpl.list(QueryImpl.java:102) at java.lang.Thread.run(Thread.java:745) Caused by: org.jboss.util.NestedSQLException: Error; - nested throwable: (java.lang.OutOfMemoryError: GC overhead limit exceeded) at org.jboss.resource.adapter.jdbc.WrappedConnection.checkException(WrappedConnection.java:873) at org.jboss.resource.adapter.jdbc.WrappedStatement.checkException(WrappedStatement.java:852) at org.jboss.resource.adapter.jdbc.WrappedResultSet.checkException(WrappedResultSet.java:1947) at org.jboss.resource.adapter.jdbc.WrappedResultSet.getString(WrappedResultSet.java:892) at org.hibernate.type.StringType.get(StringType.java:41) at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:184) at org.hibernate.type.NullableType.nullSafeGet(NullableType.java:173) at org.hibernate.type.AbstractType.hydrate(AbstractType.java:105) at org.hibernate.persister.entity.AbstractEntityPersister.hydrate(AbstractEntityPersister.java:2124) at org.hibernate.loader.Loader.loadFromResultSet(Loader.java:1404) at org.hibernate.loader.Loader.instanceNotYetLoaded(Loader.java:1332) at org.hibernate.loader.Loader.getRow(Loader.java:1230) at org.hibernate.loader.Loader.getRowFromResultSet(Loader.java:603) at org.hibernate.loader.Loader.doQuery(Loader.java:724) at org.hibernate.loader.Loader.doQueryAndInitializeNonLazyCollections(Loader.java:259) at org.hibernate.loader.Loader.doList(Loader.java:2228) ... 11 more Caused by: java.lang.OutOfMemoryError: GC overhead limit exceeded

最佳答案

您的应用程序似乎内存不足。查询可能会返回非常大的数据集,因此分配给应用程序的内存不足以处理该数据集。 您可以,

  • 增加分配给 Java 进程的内存,或者
  • 按子集(分页)获取数据,以避免一次返回大型数据集。

关于java - 执行hibernate查询时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57850059/

相关文章:

java - 如何在 dropwizard 身份验证方法中创建 GET 请求?

java - 在一个存储库中推送多个 netbeans 项目

php - 如何每隔x分钟自动删除?

java - 以下sql代码无法插入数据是什么原因?

hibernate - 升级到 Postgres 9.2(包括 Hibernate)和 Tomcat 7

java - Java 模式匹配器

java - 当垃圾收集器消除该对象时,该对象去了哪里?

mysql - 我可以在 Go 中参数化 create 语句吗?

hibernate - 如何在查询执行期间停止 session 以保存未保存的对象?

java - Hibernate 用一个 session.save 保存许多不同的对象