Guest User

Untitled

a guest
Sep 5th, 2018
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.01 KB | None | 0 0
  1. hibernate query nothing in a time range where data exist
  2. SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
  3. start = sdf.parse("2011-02-22 10:00:00");
  4. end = sdf.parse("2011-02-22 16:00:00");
  5.  
  6.  
  7. 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")
  8. .setDate(0, start).setDate(1, end);
  9. System.out.println(q.list()); //here I got 0 result,
  10.  
  11. System.out.println("===== Make the start date smaller =========");
  12. start=sdf.parse("2011-02-21 10:00:00");
  13. 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")
  14. .setDate(0, start).setDate(1, end);
  15. System.out.println(q.list()); //here I got 26 result
  16.  
  17. System.out.println("===== Make the end date bigger =========");
  18. end=sdf.parse("2011-02-23 16:00:00");
  19. 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")
  20. .setDate(0, start).setDate(1, end); //here I got 39 result
  21. System.out.println(q.list());
  22.  
  23. select uri,count(uri) as num from xxx_log where time between 20110222100000 and 20110222160000 group by uri order by num desc
  24.  
  25. @Test
  26. public void testSQLAndHibernate() throws ParseException {
  27. start = sdf.parse("2011-02-22 10:00:00");
  28. end = sdf.parse("2011-02-22 16:00:00");
  29. // use hibernate
  30. Session sess = HibernateUtil.getSessionFactory().getCurrentSession();
  31. sess.beginTransaction();
  32.  
  33. Query q = sess
  34. .createQuery(
  35. "select log.uri,count(log.uri) as num from LogEntry log where log.time between ? and ? group by log.uri order by num desc")
  36. .setDate(0, start).setDate(1, end);
  37. System.out.println("get "+q.list().size()+" results by hibernate");
  38.  
  39. System.out.println("++++++++++++++");
  40. // use sql
  41. SimpleDateFormat sdf_sql = new SimpleDateFormat("yyyyMMddHHmmss");
  42. String sql = "select uri,count(uri) as num from t_log where time between "
  43. + sdf_sql.format(start) + " and " + sdf_sql.format(end)
  44. + " group by uri order by num desc";
  45. try {
  46. Class.forName("com.mysql.jdbc.Driver");
  47. Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db",
  48. "root", "0000");
  49. Statement state = conn.createStatement();
  50. ResultSet rs = state.executeQuery(sql);
  51. int i=0;
  52. while (rs.next()) {
  53. //System.out.println(rs.getString(1) + " " + rs.getLong(2));
  54. i++;
  55. }
  56. System.out.println("get "+i+" results by sql query");
  57. } catch (ClassNotFoundException e) {
  58. e.printStackTrace();
  59. } catch (SQLException e) {
  60. e.printStackTrace();
  61. }
  62. }
  63.  
  64. get 0 results by hibernate
  65. ++++++++++++++
  66. get 24 results by sql query
  67.  
  68. binding parameter [1] as [DATE] - Tue Feb 22 10:00:00 CST 2011
  69. binding parameter [2] as [DATE] - Tue Feb 22 16:00:00 CST 2011
Add Comment
Please, Sign In to add comment