当前位置: 首页 > 知识库问答 >
问题:

执行hibernate查询时出错

鲁宏爽
2023-03-14

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

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

显示的错误是:

组织。冬眠例外GenericJDBCException:无法在组织上执行查询。冬眠例外SQLStateConverter。在组织中处理非特定异常(SQLStateConverter.java:126)。冬眠例外SQLStateConverter。org上的convert(sqlstatecoverter.java:114)。冬眠例外JDBCExceptionHelper。在org上转换(jdbceptionhelper.java:66)。冬眠装载机。装载机。doList(Loader.java:2231)位于org。冬眠装载机。装载机。org上的listIgnoreQueryCache(Loader.java:2125)。冬眠装载机。装载机。org上的列表(Loader.java:2120)。冬眠装载机。hql。QueryLoader。org上的列表(QueryLoader.java:401)。冬眠hql。ast。QueryTranslatorImpl。org上的列表(QueryTranslatorImpl.java:361)。冬眠发动机查询HQLQueryPlan。performList(HQLQueryPlan.java:196)位于org。冬眠impl。SessionImpl。org上的列表(SessionImpl.java:1148)。冬眠impl。QueryImpl。java上的列表(QueryImpl.java:102)。lang.Thread。运行(Thread.java:745)由:org引起。jboss。util。NestedSQLException:错误;-嵌套throwable:(java.lang.OutOfMemoryError:超出GC开销限制)位于组织。jboss。资源适配器。jdbc。包装连接。org上的checkException(WrappedConnection.java:873)。jboss。资源适配器。jdbc。包装声明。org上的checkException(WrappedStatement.java:852)。jboss。资源适配器。jdbc。包装结果集。org上的checkException(WrappedResultSet.java:1947)。jboss。资源适配器。jdbc。包装结果集。org上的getString(WrappedResultSet.java:892)。冬眠类型StringType。在org上获取(StringType.java:41)。冬眠类型NullableType。位于org的nullSafeGet(NullableType.java:184)。冬眠类型NullableType。位于org的nullSafeGet(NullableType.java:173)。冬眠类型抽象类型。Hyde(AbstractType.java:105)位于org。冬眠坚持者。实体AbstractEntityPersister。水合物(AbstractEntityPersister.java:2124)位于org。冬眠装载机。装载机。loadFromResultSet(Loader.java:1404)位于org。冬眠装载机。装载机。InstanceNodeLoaded(Loader.java:1332)位于org。冬眠装载机。装载机。位于org的getRow(Loader.java:1230)。冬眠装载机。装载机。getRowFromResultSet(Loader.java:603)位于org。冬眠装载机。装载机。doQuery(Loader.java:724)位于org。冬眠装载机。装载机。doQueryAndInitializeNonLazyCollections(Loader.java:259)位于org。冬眠装载机。装载机。doList(Loader.java:2228)。。。11更多原因:java。lang.OutOfMemoryError:超出GC开销限制

共有2个答案

桂高昂
2023-03-14

基于您的堆栈跟踪,查询在数据库中成功执行,并且在JVM内部准备结果集时发生错误。此异常是与内存相关的问题,当您的程序需要的内存超过可用内存时会发生。

msgstr"当Java虚拟机无法分配对象时抛出,因为它内存溢出,垃圾收集器无法提供更多内存"

一些可能性是

>

  • 配置:堆配置(Xmx)对于您的需要来说太小,您应该扩展它。

    错误:查询中有一个错误,生成的结果集比预期的大。

    设计:您需要重新设计代码,以便在不超过可用内存的情况下加载此数据。您可以进行分页,并在每次迭代中存储一小块数据。在这种情况下,重要的是在加载下一个页面之前将每个页面刷新到最终用户或消费者。

    GC开销教程

    查询分页教程

  • 索梓
    2023-03-14

    您的应用程序似乎运行内存溢出。查询可能返回了一个非常大的数据集,因此分配给应用程序的内存不足以处理它。您可以,

    • 增加分配给Java进程的内存,或
     类似资料:
    • 使用执行hql查询时出现错误 我的疑问是 堆栈跟踪是

    • 问题内容: 我有带有库的IntelliJ项目:Hibernate-entitymanager 4.3.4和JPA 2.0-2.0。使用postgresql-9.3.1100.jdbc4连接到数据库。如何解决? jpa-ql>从ItemEntity中选择ItemEntity.name; 问题答案: 只需阅读文档: http://docs.oracle.com/javaee/7/api/javax/p

    • 我对Neo4J花了不少心思,但对graphql却一筹莫展 我通过运行以下操作创建了graphql模式: 我有一个带有三个标签的节点类型。我尝试在graphiql中运行以下查询,得到了同样的错误。由于堆栈的原因,我想知道graphiql是否在添加meta并移动到了neo4j浏览器--同样的错误。 查询: 错误: 我可能做了一些明显错误的事情,但任何帮助都将是感激的

    • 我在android中使用Facebook登录。 代码: 但总是得到以下错误: SERVER _ ERROR:[code]1675030[message]:执行查询时出错。[额外]:执行操作“ProxyAuthAppLoginQuery”时出错:在Query.proxy_auth_app_login:无法解析字段。W/system . err:< br > at com . Facebook . l

    • 我目前使用的是mysql 我有两个名为person和zim_list_id的表,这两个表都有超过200万行