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

第1000条中的“休眠标准”分解

宋运锋
2023-03-14
问题内容

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

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

并且我需要由某人测试的Java代码作为休眠用户定义的组件,以便尽可能容易地将其添加到屏幕上的搜索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;
    }
}


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

  • 问题内容: 在甲骨文我有格式的日期 2011年4月17日19:20:23.707000000 我想检索2011年4月17日的所有订单。 但这给我带来了空洞的结果: 问题答案: 为什么使用)? 您应该使用。 请注意,您也可以使用,,,在日期对象作为比较操作。运算符不适用于这种情况,因为当您要根据列的部分内容匹配结果时很有用。请参阅http://www.sql- tutorial.net/SQL-LI

  • 问题内容: 假设我有一个带有数量字段和价格字段的持久类Item。有没有办法建立一个计算数量*价格之和的标准? 问题答案: 我认为您也可以使用SQL投影。应该是这样的: 奥里

  • 问题内容: 有一个“ Item”类,它有一些相关的类,称为Vehicle,Vmodel,Category,ItemName,Brand,SizeModel。每个类都有属性ID和名称(例如Vehicle类,“ vid”和“ vname”)。 Item类具有itemcode。 另外,我还需要从给定的示例Item对象(称为“ ”)中获取Item对象,该对象等于我的示例item对象的属性以及与该对象关联的

  • 问题内容: 我正在尝试做这样的事情,但使用代替: 用户是与联接表UserDomain 有关系的实体。这里的重点只是找到链接到具有id =“ XXX”的用户。 似乎应该很简单…但是到目前为止我还没有运气找到任何有用的文档。 问题答案: 我终于找到了。事实证明,这毕竟并不难……一旦您知道! 是的,有人盯着我看Javadoc:http : //www.dil.univ- mrs.fr/~massat/d

  • 问题内容: 如何将sql查询写入休眠条件? 问题答案: 认为我找到了答案。您必须使用Projection.sqlProjection()而不是Projections.sum()。例: