gpt4 book ai didi

oracle - hibernate 重复查询

转载 作者:行者123 更新时间:2023-12-04 06:08:34 26 4
gpt4 key购买 nike

我有从 填充数据的 Web 应用程序(作为 ORM,我使用 Hibernate )甲骨文 11 D B。
在短时间内,一些 Oracle 包变得无效,然后又变得有效(这是遗留数据加载,在此过程中用户可以使用其他 UI)。

当数据加载完成并且用户对这些包执行任何查询时,我有一个错误:

ORA-04068: existing state of packages has been discarded ORA-04061: existing state of package "sche.pck" has been invalidated ORA-04065: not executed, altered or dropped package "sche.pck" ORA-06508: PL/SQL: could not find program unit being called: "sche.pck"



如果用户按 F5(在错误消息屏幕上),则查询成功执行。发生此类错误时,是否有任何方法可以重复用户查询?

最佳答案

是 - 尝试/捕获异常,检查异常消息,寻找 ORA-04068 ,如果找到,则重新运行查询。

理想情况下,您应该进行多次重试。就像是:

for (int i = 0; i < 3; i++) {
try {
executeQuery();
break; //if successful;
} catch (..) {
if (!ex.getMessage().contains("ORA-06508")){
throw ex;
}
}
}

看起来有点hacky,我建议尝试解决原来的问题。

更新:

看来你在很多地方都必须这样做,所以上面的内容会很乏味。如果您确实无法解决底层 oracle 问题,您可以尝试将 DataSource、Connection 和 Statement 对象包装到您自己的实现中,这些实现只是委托(delegate)给底层对象,但在 executeQuery() 的情况下, 执行重试。

关于oracle - hibernate 重复查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8062315/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com