Java 使用Hibernate从2个不同的属性查询范围
我不熟悉休眠查询。我有一个关于hibernate范围搜索的问题。我想要的是从两个不同的列中搜索一个范围 下面是我的插图 在数据库中:Java 使用Hibernate从2个不同的属性查询范围,java,hibernate,jakarta-ee,Java,Hibernate,Jakarta Ee,我不熟悉休眠查询。我有一个关于hibernate范围搜索的问题。我想要的是从两个不同的列中搜索一个范围 下面是我的插图 在数据库中: Start_No | End_No 3000 | 4000 我的hibernate查询是这样的 session = getSession(); session.buildLockRequest(new LockOptions(LockMode.NONE)); Criteria crit = sessio
Start_No | End_No
3000 | 4000
我的hibernate查询是这样的
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();
输出如下
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分贝的范围内
并显示输出。我怎样才能创建一个hibernate标准来满足这个搜索 创建标准的步骤如下 1.创建会话 2.添加投影 3.然后添加限制。 你的投影列表看起来不错 对您的条件执行以下操作(对Restrictions类调用方法返回Criteria对象) 为每个条件定义标准对象 标准c1=Restrictions.ge(“startNo”,Long.parseLong(s_startNo)); 标准c2=Restrictions.le(“endNo”,Long.parseLong(s_endNo)) 将这些条件添加到对象 标准c3=限制条件和(c1,c3); 标准增补(c3) 一行
crit.add(Restrictions.and(Restrictions.ge(“startNo”,Long.parseLong(s_startNo)),Restrictions.le(“endNo”,Long.parseLong(s_endNo))) 如果您要查找介于start_no和end_no之间的一系列值,则可以使用一个简单的where条件。where start\u no=:parma2现在您正在执行类似于
的操作where start\u no>:endNoParam和start\u no>:startNoParam
,这显然不是您所描述的。