科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道OJB中的多条件查询

OJB中的多条件查询

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

项目还是一样,以一个reservation为例,一个reservation就是一个课程在实际中的体现,它有开始和终止时间还有状态等信息。timeslot就是定义了他的时间。

作者:中国IT实验室 来源:中国IT实验室 2007年9月26日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

在本页阅读全文(共2页)

2. 如果我要创建一个reservation,要判断的是当前这个创建的reservation是否与其它的reservation有交叉点的时间,那查询条件就这样修改

  1. broker = PersistenceBrokerFactory.defaultPersistenceBroker();
  2. broker.clearCache();
  3. //general criteria, with all the query condition
  4. Criteria crit = new Criteria();
  5. Criteria crit1 = null;
  6. List criteriaList = new Vector();
  7. if (this.selectType == Constants.TOUCHING_RESERVATIONS) {
  8.     crit1 = new Criteria();
  9.     /**
  10. * <p>the start time is in between <code>this.startTimeUTC</code> and <code>this.endTimeUTC</code>
  11.      */
  12.     crit1.addGreaterOrEqualThan("start", startTimeUTC);
  13.     crit1.addLessOrEqualThan("start", endTimeUTC);
  14.     /**
  15. * <p>the end time is in between <code>this.startTimeUTC</code> and <code>this.endTimeUTC</code>
  16.      */
  17.     Criteria crit2 = new Criteria();
  18.     crit2.addGreaterOrEqualThan("end", startTimeUTC);
  19.     crit2.addLessOrEqualThan("end", endTimeUTC);
  20.     /**
  21.      * <p>the start time is in less than <code>this.startTimeUTC</code> and 
  22.      * the end time is greater than <code>this.endTimeUTC</code>
  23.      */
  24.     Criteria crit3 = new Criteria();
  25.     crit3.addLessOrEqualThan("start", startTimeUTC);
  26.     crit3.addGreaterOrEqualThan("end", endTimeUTC);
  27.     crit1.addOrCriteria(crit2);
  28.     crit1.addOrCriteria(crit3);
  29. }
  30. criteriaList.add(crit1.copy(truetruetrue));
  31. if (criteriaList.size() > 0) {
  32.     crit1 = new Criteria();
  33.     for (int i = 0; i < criteriaList.size(); i++) {
  34.         crit1.addOrCriteria((Criteria) criteriaList.get(i));
  35.     }
  36.     crit.addAndCriteria(crit1);
  37. }
  38. QueryByCriteria tquery = QueryFactory.newQuery(Timeslot.class, crit);
  39. this.timeslots = broker.getCollectionByQuery(tquery);
  40. broker.clearCache();
  41. broker.close();

查看本文来源

    • 评论
    • 分享微博
    • 分享邮件