在hibernate中查询一个时间段的数据方法总结

这是在一个群里讨论的问题。

方法很多:如果说数据库中数据的存储是用date类型的话,改怎么做,如果说做数据迁移的话又该怎么做?

最终的讨论方案在用字符串存储格式上比较好,毕竟各个数据库对时间的存储存在差异。

一下是我用Hibernate中的HQL,和QBC两种检索方式对一段时间内的数据进行检索。 <p> 1 package com.duduli.li;</p> <p> 2 </p> <p> 3 import Java.util.Date;</p> <p> 4 import java.util.Iterator;</p> <p> 5 import java.util.List;</p> <p> 6 </p> <p> 7 import org.hibernate.Criteria;</p> <p> 8 import org.hibernate.Session;</p> <p> 9 import org.hibernate.Transaction;</p> <p>10 import org.hibernate.criterion.Criterion;</p> <p>11 import org.hibernate.criterion.Expression;</p> <p>12 </p> <p>13 public class Select {</p> <p>14 </p> <p>15     /**</p> <p>16      * @param args</p> <p>17      */</p> <p>18     public static void main(String[] args) {</p> <p>19         // TODO Auto-generated method stub</p> <p>20         Session session = HibernateSessionFactory.getSession();</p> <p>21         Transaction tran = session.beginTransaction();</p> <p>22 /*        </p> <p>23  *         采用HQL的方式,</p> <p>24         Date begin = java.sql.Date.valueOf("2009-03-24");</p> <p>25         Date end = java.sql.Date.valueOf("2009-03-26");</p> <p>26         List<A> result = session.createQuery("from A a where a.date > :beginTime and a.date <= :endTime").setTimestamp("beginTime", begin).setTimestamp("endTime", end).list();</p> <p>27         for(A a : result){</p> <p>28                 System.out.println(a.getId());</p> <p>29                 System.out.println(a.getTitle());</p> <p>30                 System.out.println(a.getDate());</p> <p>31         }</p> <p>32         */</p> <p>33         </p> <p>34 //        采用QBC的方式。</p> <p>35         Date begin = java.sql.Date.valueOf("2009-3-24");</p> <p>36         Date end = java.sql.Date.valueOf("2009-3-26");</p> <p>37         Criteria criteria = session.createCriteria(AbstractA.class);</p> <p>38         Criterion creterion = Expression.between("date", begin, end);</p> <p>39         List<A> result = criteria.add(creterion).list();</p> <p>40         for(A a : result){</p> <p>41             System.out.println(a.getId());</p> <p>42             System.out.println(a.getTitle());</p> <p>43             System.out.println(a.getDate());</p> <p>44         }</p> <p>45     }</p> <p>46 }

相关推荐