【问题标题】:Load objects from db by parameter Date通过参数 Date 从 db 加载对象
【发布时间】:2016-01-01 18:36:16
【问题描述】:

我在数据库中有一些对象。每个对象都有日期格式的参数 Date,例如“Mon Oct 05 08:55:36 CEST 2015”。我想加载从 24 小时前到现在的所有对象。我正在使用休眠实体管理器。你能帮帮我吗

这是我的实体参数:

private Long id;
private String email;
private String answer1;
private String answer2;
private Date date;

这是表架构:

ID ;  email ;           answer1 ;   answer2 ;   date
1  ;  any@thing.com ;     1234  ;      4321 ;   2015-10-04 18:01:19

【问题讨论】:

  • 什么是数据库?请贴出DB表架构和实体(至少限于您感兴趣的日期字段)
  • 数据库是 MySQL。我发送了几个小时的表架构和实体,直到我到达保存我的项目的 PC
  • 我建议您编辑原始帖子 - 将更具可读性
  • 那么还有一件事 - 您可以发布表 SQL 架构吗?即describe <the table name>的输出。

标签: database hibernate date entity entitymanager


【解决方案1】:

然后我假设date 表列的类型确实是SQL DATE。在这种情况下,您可以简单地运行 HQL/JPQL 查询

SELECT e FROM YourEntity e WHERE e.date BETWEEN :from AND :to

从中创建一个 PreparedStatement 并为 fromto 参数提供所需的值。使用 JPA 的示例:

EntityManager em = ...;

Date to = new Date();
Calendar fromCalendar = Calendar.getInstance();
fromCalendar.setTime(to);
fromCalendar.add(Calendar.HOUR_OF_DAY, -24);
Date from = fromCalendar.getTime();

em
        .createQuery("SELECT e FROM YourEntity e WHERE e.date BETWEEN :from AND :to", YourEntity.class)
        .setParameter("from", from, TemporalType.TIMESTAMP)
        .setParameter("to", to, TemporalType.TIMESTAMP)
        .getResultList();

使用JodaTime 或Java8 Time package 可能会使整个日期操作更容易(不知道您是否使用过这些,所以我举了一个使用“基本”Java 类的示例)。

【讨论】:

  • 我正在使用基本的 Date 类,但我将来会尝试使用 Java8 Time 包。您的解决方案看起来不错。我会尝试并告诉你。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-04
  • 1970-01-01
相关资源
最近更新 更多