Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- hibernate query nothing in a time range where data exist
- SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- start = sdf.parse("2011-02-22 10:00:00");
- end = sdf.parse("2011-02-22 16:00:00");
- Query q = sess.createQuery("select log.uri,count(log.uri) as num from LogEntry log where log.time between ? and ? group by log.uri order by num desc")
- .setDate(0, start).setDate(1, end);
- System.out.println(q.list()); //here I got 0 result,
- System.out.println("===== Make the start date smaller =========");
- start=sdf.parse("2011-02-21 10:00:00");
- q = sess.createQuery("select log.uri,count(log.uri) as num from LogEntry log where log.time between ? and ? group by log.uri order by num desc")
- .setDate(0, start).setDate(1, end);
- System.out.println(q.list()); //here I got 26 result
- System.out.println("===== Make the end date bigger =========");
- end=sdf.parse("2011-02-23 16:00:00");
- q = sess.createQuery("select log.uri,count(log.uri) as num from LogEntry log where log.time between ? and ? group by log.uri order by num desc")
- .setDate(0, start).setDate(1, end); //here I got 39 result
- System.out.println(q.list());
- select uri,count(uri) as num from xxx_log where time between 20110222100000 and 20110222160000 group by uri order by num desc
- @Test
- public void testSQLAndHibernate() throws ParseException {
- start = sdf.parse("2011-02-22 10:00:00");
- end = sdf.parse("2011-02-22 16:00:00");
- // use hibernate
- Session sess = HibernateUtil.getSessionFactory().getCurrentSession();
- sess.beginTransaction();
- Query q = sess
- .createQuery(
- "select log.uri,count(log.uri) as num from LogEntry log where log.time between ? and ? group by log.uri order by num desc")
- .setDate(0, start).setDate(1, end);
- System.out.println("get "+q.list().size()+" results by hibernate");
- System.out.println("++++++++++++++");
- // use sql
- SimpleDateFormat sdf_sql = new SimpleDateFormat("yyyyMMddHHmmss");
- String sql = "select uri,count(uri) as num from t_log where time between "
- + sdf_sql.format(start) + " and " + sdf_sql.format(end)
- + " group by uri order by num desc";
- try {
- Class.forName("com.mysql.jdbc.Driver");
- Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db",
- "root", "0000");
- Statement state = conn.createStatement();
- ResultSet rs = state.executeQuery(sql);
- int i=0;
- while (rs.next()) {
- //System.out.println(rs.getString(1) + " " + rs.getLong(2));
- i++;
- }
- System.out.println("get "+i+" results by sql query");
- } catch (ClassNotFoundException e) {
- e.printStackTrace();
- } catch (SQLException e) {
- e.printStackTrace();
- }
- }
- get 0 results by hibernate
- ++++++++++++++
- get 24 results by sql query
- binding parameter [1] as [DATE] - Tue Feb 22 10:00:00 CST 2011
- binding parameter [2] as [DATE] - Tue Feb 22 16:00:00 CST 2011
Add Comment
Please, Sign In to add comment