当前位置: 首页 > 面试题库 >

条款1000中的hibernate标准

邬飞捷
2023-03-14
问题内容

嗨,我有这个大型的OraclehibernateWeb应用程序,它似乎给出了此错误

ORA-01795: maximum number of expressions in a list is 1000

并且我需要由某人测试的Java代码作为hibernate用户定义的组件,以便尽可能容易地将其添加到屏幕上的搜索Java类中,有人可以拥有经过测试的组件?


问题答案:

我尝试从链接下面的代码,它似乎工作得很好,万一将来链接被打破,我会粘贴代码。

保持简单保持微笑:)

    /**
    * An utility method to build the Criterion Query IN clause if the number of parameter
    * values passed has a size more than 1000. Oracle does not allow more than
    * 1000 parameter values in a IN clause. Doing so a {@link SQLException} is
    * thrown with error code, 'ORA-01795: maximum number of expressions in a list is 1000'.
    * @param propertyName
    * @param values
    * @return
    */
import java.util.List;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author 2796
 */
public class SplitHibernateIn {

    private static int PARAMETER_LIMIT = 999;

    public static org.hibernate.criterion.Criterion buildInCriterion(String propertyName, List values) {
        org.hibernate.criterion.Criterion criterion = null;

        int listSize = values.size();
        for (int i = 0; i < listSize; i += PARAMETER_LIMIT) {
            List subList;
            if (listSize > i + PARAMETER_LIMIT) {
                subList = values.subList(i, (i + PARAMETER_LIMIT));
            } else {
                subList = values.subList(i, listSize);
            }
            if (criterion != null) {
                criterion = Restrictions.or(criterion, Restrictions.in(propertyName, subList));
            } else {
                criterion = Restrictions.in(propertyName, subList);
            }
        }
        return criterion;
    }
}


 类似资料:
  • 问题内容: 嗨,我有这个大型的Oracle休眠Web应用程序,它似乎给出了此错误 并且我需要由某人测试的Java代码作为休眠用户定义的组件,以便尽可能容易地将其添加到屏幕上的搜索Java类中,有人可以拥有经过测试的组件吗? 问题答案: 我尝试从链接下面的代码,它似乎工作得很好,万一将来链接被打破,我会粘贴代码。 保持简单,保持微笑:)

  • 条款49: 熟悉标准库 C++标准库很大。非常大。难以置信的大。怎么个大法?这么说吧:在C++标准中,关于标准库的规格说明占了密密麻麻300多页,这还不包括标准C库,后者只是 "作为参考"(老实说,原文就是用的这个词)包含在C++库中。 当然,并非总是越大越好,但在现在的情况下,确实越大越好,因为大的库会包含大量的功能。标准库中的功能越多,开发自己的应用程序时能借助的功能就越多。C++库并非提供了

  • 我有一个场景,我需要为1000多条记录更新日期字段。 我使用的是本机查询,但出现了错误ora-01795列表中表达式的最大数目是1000。 经过检查,我找到了一些解决方案,比如打破这个答案中提到的in条款。 但我正在寻找这个解决方案,不是一个非常干净的解决方案。 在Spring中,我还可以使用其他更干净的方法吗?请建议。 我当前的查询如下: 我传入列表的ID是从第三方API收集的。

  • 条款9: 避免隐藏标准形式的new 因为内部范围声明的名称会隐藏掉外部范围的相同的名称,所以对于分别在类的内部 和全局声明的两个相同名字的函数f来说,类的成员函数会隐藏掉全局函数: void f(); // 全局函数 class x { public: void f(); // 成员函数 }; x x; f(); // 调用 f x.f(); // 调用 x::f 这不会令人惊讶,也不会导致混淆,

  • 条款25:熟悉非标准散列容器 STL程序员一般用不了多久就开始惊讶,“vector、list、map,很好,但是散列(hash)表在哪里"?唉,在标准C++库里没有任何散列表。 每个人都同意这是个不幸,但是标准委员会觉得需要加给他们的工作可能会过渡地推迟标准的完成。可以肯定标准的下一个版本将包含散列表,但是目前,STL没有散列的东西。 但是如果你喜欢散列表,那么振作起来。你不需要放弃或自己做一个。

  • 条款 当您访问 https://casbin.org 时,我们认为您同意如下条款及适用的法律法规,并且对相应的法律法规负责。 如果您不同意其中的任何一条,那您将没有权限访问或使用我们的网站。 此网站的所有资源均受到相应版权和商标法的保护。 使用许可证 当您从 Casbin 官网下载资料副本(信息或者软件)时,我们将授予您一份临时许可,仅供您个人的非商业阅览。 我们仅授权您使用,但并不将产权转让给您