首页 > 解决方案 > 休眠命名查询(选择)

问题描述

我们在项目中使用休眠作为 ORM 以及 Spring 框架。今天,我遇到了一个问题,即一个命名查询(基本上是一个选择查询)在被多次调用时给出了不一致的结果。命中此选择查询不在循环中,而来自前端。因此,当我从前端多次执行相同的操作时,有时查询会从数据库中获取正确的数据,但有时不会。

示例:(示例代码)

Query query = session.getNamedQuery("select debitid from ABCMstrEntity where entitynum=: entitynum and isopen=:Y");

query.set(........);

..
List<Object[]> list = (List<Object[]>)query.list;

在前 4 次尝试中,我在列表对象中得到了正确的数据。在我的第 5 次尝试中,我得到了空列表对象,尽管 db 中存在所提供输入的数据。当我在 DB 端使用 db 查询日志检查它时,我发现我的第 5 次尝试在 DB 端没有命中。看来,这里出了点问题。

我还在我的项目中检查了 hibernate 中的缓存相关设置,但我们没有在任何缓存区域中缓存查询结果。此外,应用程序日志中也没有异常。

请有人帮助我分析和修复这个问题。

标签: javamysqlspringhibernate

解决方案


推荐阅读