如何从 JPA 标准中的时间戳列中按日期查找?

2024-03-28

我想按日期查找记录。在实体和数据库表中,数据类型是时间戳。我用的是Oracle数据库。

@Entity
public class Request implements Serializable {
  @Id
  private String id;
  @Version
  private long version;
  @Temporal(TemporalType.TIMESTAMP)
  @Column(name = "CREATION_DATE")
  private Date creationDate;

  public Request() {
  }

  public Request(String id, Date creationDate) {
    setId(id);
    setCreationDate(creationDate);
  }

  public String getId() {
    return id;
  }

  public void setId(String id) {
    this.id = id;
  }

  public long getVersion() {
    return version;
  }

  public void setVersion(long version) {
    this.version = version;
  }

  public Date getCreationDate() {
    return creationDate;
  }

  public void setCreationDate(Date creationDate) {
    this.creationDate = creationDate;
  }
}

在主方法中

public static void main(String[] args) {
    RequestTestCase requestTestCase = new RequestTestCase();
    EntityManager em = Persistence.createEntityManagerFactory("Criteria").createEntityManager();

    em.getTransaction().begin();
    em.persist(new Request("005",new Date()));
    em.getTransaction().commit();

    Query q = em.createQuery("SELECT r FROM Request r WHERE r.creationDate = :creationDate",Request.class);
    q.setParameter("creationDate",new GregorianCalendar(2012,12,5).getTime());
    Request r = (Request)q.getSingleResult();
    System.out.println(r.getCreationDate());        

}

Oracle数据库中的记录是,

ID      CREATION_DATE                   VERSION

006     05-DEC-12 05.34.39.200000 PM    1

例外的是,

Exception in thread "main" javax.persistence.NoResultException: getSingleResult() did     not retrieve any entities.
at    org.eclipse.persistence.internal.jpa.EJBQueryImpl.throwNoResultException(EJBQueryImpl.java:1246)
at org.eclipse.persistence.internal.jpa.EJBQueryImpl.getSingleResult(EJBQueryImpl.java:750)
at com.ktrsn.RequestTestCase.main(RequestTestCase.java:29)

数据库类型是TIMESTAMP并不是DATE,这意味着您存储准确的时间。

使用时new GregorianCalendar(2012,12,5).getTime()您正在查询与给定日期 00:00:00.000 匹配且数据库中不存在的时间戳

您应该更改数据库以存储日期而不是时间戳,或者更改您的查询。

JPA 2 具有年、月和日功能,因此您可以

SELECT WHERE YEAR(yourdate) = YEAR(dbdate) AND MONTH(yourdate) = MONTH(dbdate) and DAY(yourdate) = DATE(dbdate)

在 Criteria API 中,您可以执行以下操作:

Expression<Integer> yourdateYear = cb.function("year", Integer.class, yourdate);
Expression<Integer> yourdateMonth = cb.function("month", Integer.class, yourdate);
Expression<Integer> yourdateDay = cb.function("day", Integer.class, yourdate);

然后将它们与 AND 表达式结合起来,并对 db 中的日期字段执行相同的操作并进行比较。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 JPA 标准中的时间戳列中按日期查找? 的相关文章

随机推荐

  • 使用 ScikitLearn 的神经网络实现时出现的问题

    我正在尝试使用 Scikit Learn 提供的神经网络实现来实现图像处理 我有近 10 000 张 JPG 格式的彩色图像 我将这些图像转换为 PNG 格式并删除了颜色信息 新图像都是黑白图像 将这些图像转换为矢量格式后 这些图像矢量形成
  • Pascal 支持向函数传递参数吗?

    我是 Pascal 新手 我正在尝试编写一个简单的程序 但在函数之间传递值时遇到问题 这是我所拥有的一小部分 program numberConverter const maxValue 4999 minValue 1 var num in
  • @echo 在cmd中关闭

    我正在尝试编写一个 BAT 脚本 我有以下内容 echo off REM Comments here SETLOCAL ENABLEDELAYEDEXPANSION set PROG ROOT C Prog set ONE 1 echo 1
  • .htaccess文件自动修改

    我有由 WordPress 提供支持的网站 并且 WordPress 根文件夹中也有 html 文件 因为 WordPress 不允许 html 文件 我编写了 htaccess 代码来打开 html 文件以及 WordPress 页面 但
  • 使用 python-ldap 向 Active Directory 进行身份验证始终返回 (97, [])

    如同这个问题 https stackoverflow com questions 140439 authenticating against active directory using python ldap 我尝试使用 python l
  • 将引用单元格公式添加到代码中

    在此输入图像描述 https i stack imgur com 48OqU jpg 这就是输出 https i stack imgur com FCqOg jpg 我在单元格 C1 中有这个公式 用于平均第 2 列中的值相对于第 1 列的
  • rake 数据库适配器与database.yml不一致

    In database yml rails 生成的默认文件 default default adapter sqlite3 pool 5 timeout 5000 development lt lt default database db
  • 无法与 aSmack 4.0.2 建立新连接

    我正在学习 Android 编程 这几天我一直在努力解决这个问题 我正在编写一个应该连接到 XMPP 服务器的 Android 应用程序 我总是遇到同样的错误 并且真的不知道我做错了什么 我尝试过通过谷歌找到的示例代码 但也无法与它们建立连
  • 循环遍历 PL/pgSQL 中给定的值列表

    我试图循环遍历几个字段并在它们上运行一个函数 FOR field IN ARRAY f1 f2 LOOP execute pg temp converFieldToLower newTableNameRaw field END LOOP 这
  • 监视单元格值并将其复制到另一个单元格

    我想知道如何监视单元格值并使该值始终在其他单元格上更新 到目前为止 我一直在使用 符号 然后选择我想要监视的单元格 问题是我正在监视的行 单元格由于另一个 vba 脚本而不断更新 当发生这种情况时我得到REF error e g On th
  • 将变量值从第二个 PowerShell 脚本返回到第一个 PowerShell 脚本?

    我创建1 ps1调用的脚本2 ps1脚本 打电话后2 ps1它给出了一些结果 variable 我要这个 variable结果将在我的中使用1 ps1用于操纵 csv Get Content 10 46 198 141 try window
  • matplotlib 两种颜色之间的颜色渐变

    我想要 matplotlib 中黑色和红色之间的颜色渐变 其中低值是黑色 随着 Y 值的增加而变得越来越红色 import matplotlib pyplot as plt xvals np arange 0 1 0 01 yvals xv
  • 使用 str_extract_all 查找多个字符串

    我有一个字符串列表 如下所示 tofind lt c aaa bbb ccc ddd 我还有一个向量如下 n lt c aaabbb aaa aaacccddd eee 我想找到我的所有匹配项tofind字符串 以便输出应该是 aaa bb
  • 如何使用 dcpcrypt 在 delphi 和 php 之间同步加密

    我正在使用 Delphi 2009 我在这里看到的大多数答案都是针对 2010 我正在尝试将加密 delphi 同步到解密 php 并且失败 在delphi中生成加密字符串 program Project4 APPTYPE CONSOLE
  • 带键的 array_pop()

    考虑以下数组 array array fruit gt apple vegetable gt potato dairy gt cheese 我想用数组弹出 http php net manual en function array pop
  • 从 matplotlib 轴对象获取数据

    我正在尝试确定 matplotlib 上的数据点axes http matplotlib org api axes api html matplotlib axes 是否有我缺少的属性Axes http matplotlib org api
  • 被释放的指针未分配[Swift]

    我正在尝试读取 TCP 套接字连接中的长字符串 对于读取短长度字符串 它工作正常 但是当我尝试发送长长度的 base64 编码图像时 它崩溃了 我尝试增加到maxReadLength 10000 但仍然不起作用 读取传入消息 private
  • 在转储文件上使用 pg_restore

    我在 Heroku 上有一个数据库 我正在尝试将其复制到本地计算机 我通过执行以下操作创建了数据库的备份 heroku pgbackups capture 这将创建一个数据库的转储文件 我通过创建指向该数据库的 URL 链接来下载该文件 h
  • Ajax 删除链接 注销current_user

    标题几乎解释了这一点 我遇到了一种奇怪的情况 允许用户使用 Ajax 删除通知的视图会导致 current user 被注销 我什至不知道从哪里开始调试这个 这是控制器 class NotificationsController lt Ap
  • 如何从 JPA 标准中的时间戳列中按日期查找?

    我想按日期查找记录 在实体和数据库表中 数据类型是时间戳 我用的是Oracle数据库 Entity public class Request implements Serializable Id private String id Vers