【问题标题】:Using Hibernate to Query Range from 2 Different property使用 Hibernate 从 2 个不同的属性中查询范围
【发布时间】:2017-01-18 03:54:42
【问题描述】:

我是休眠查询的新手。我有一个关于休眠范围搜索的问题。我想要的是从 2 个不同的列中搜索一个范围 下面是我的插画

在数据库中:

 Start_No | End_No
  3000    | 4000

我的休眠查询是这样的

session = getSession();
            session.buildLockRequest(new LockOptions(LockMode.NONE));
            Criteria crit = session.createCriteria(CardRange.class);

if(!IMXUtil.isEmpty(s_startNo) && !IMXUtil.isEmpty(s_endNo)){
                crit.add(Restrictions.ge("startNo", Long.parseLong(s_endNo)));

                crit.add(Restrictions.ge("startNo", Long.parseLong(s_startNo)));

            }

ProjectionList projList = Projections.projectionList();
            projList.add(Projections.property("cardRangeId"));
            projList.add(Projections.property("startNo"));
            projList.add(Projections.property("endNo"));
            projList.add(Projections.property("issuerId"));
            projList.add(Projections.property("status"));
            projList.add(Projections.property("createdDate"));
            projList.add(Projections.property("lastModifiedDate"));
            crit.setProjection(projList);
            crit.setFirstResult(iDisplayStart);
            crit.setMaxResults(iDisplayLength);

return crit.list();

输出是这样的

如果我把 3500 到 3600 = 它仍然在数据库中 3000 到 4000 的范围内 并显示输出。我如何能够创建一个休眠条件来满足这个搜索?

【问题讨论】:

  • 如果您要查找 start_no 和 end_no 之间的值范围,则可以使用简单的 where 条件。其中 start_no = :parma2
  • 现在你正在做类似where start_no > :endNoParam and start_no > :startNoParam 的事情,这显然不是你所描述的。

标签: java hibernate jakarta-ee


【解决方案1】:

创建标准的步骤是

1.创建会话 2.添加投影 3.然后添加限制。 你的投影列表看起来不错。

对您的标准执行以下操作(在 Restrictions 类上调用方法返回标准对象),

为每个条件定义标准对象

标准 c1 = Restrictions.ge("startNo",Long.parseLong(s_startNo)); 标准 c2 = Restrictions.le("endNo",Long.parseLong(s_endNo));

将这些添加到标准对象

标准 c3 = Restrictions.and(c1,c3); 暴击.add(c3);

一行

crit.add(Restrictions.and(Restrictions.ge("startNo",Long.parseLong(s_startNo)),Restrictions.le("endNo",Long.parseLong(s_endNo))));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2013-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-22
    相关资源
    最近更新 更多