用hibernate查询一段时间的记录

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

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

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

一下是我用hibernate中的HQL,和QBC两种检索方式对一段时间内的数据进行检索。

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

自信的生命最美丽!

用hibernate查询一段时间的记录

相关文章:

你感兴趣的文章:

标签云: