当前位置: 首页 > 面试题库 >

使用JPA /休眠条件在日期之间切换

董鸣
2023-03-14
问题内容

我正在尝试使用以下代码从MySQL表中提取“体验”对象列表。每种体验都有一个from datetime列和一个to
datetime列,我只想在今天的日期介于from和to之间的地方拉行。

我正在使用从Hibernate运行的JPA 2.0。

    Date currentDate = new Date();
    CriteriaBuilder builder = entityManager.getCriteriaBuilder();
    CriteriaQuery<Experience> query = builder.createQuery(Experience.class);
    Root<Experience> root = query.from(Experience.class);
    builder.between(currentDate, root.get("from"), root.get("to"));
    return entityManager.createQuery(query).getResultList();

我的问题是,builder.between()显然不允许我传递Date对象。

我的问题有更好的解决方案吗?


问题答案:

您可以将其作为参数传递:

ParameterExpression<Date> d = builder.parameter(Date.class);
builder.between(d, root.<Date>get("from"), root.<Date>get("to")); 
return entityManager.createQuery(query)
    .setParameter(d, currentDate, TemporalType.DATE).getResultList();

请注意,在这种情况下,您需要指定所需的时间类型。

您也可以依靠数据库的当前日期:builder.currentDate()builder.currentTimestamp(),等



 类似资料:
  • 问题内容: 如何将sql查询写入休眠条件? 问题答案: 认为我找到了答案。您必须使用Projection.sqlProjection()而不是Projections.sum()。例:

  • 问题内容: 我想知道如何使用Range-Query在Hibernate Search中按日期进行搜索,还是我必须实现任何过滤器?以下是我在Record Entity中的字段 我的要求是找到两个日期之间分析的记录,例如。2011年11月11日至2012年11月11日。我很困惑如何执行此操作。 问题答案: 您应该使用 从 和 到 的范围查询。 因为您使用 DateTools 自己创建了基于字符串的搜索

  • 问题内容: 在甲骨文我有格式的日期 2011年4月17日19:20:23.707000000 我想检索2011年4月17日的所有订单。 但这给我带来了空洞的结果: 问题答案: 为什么使用)? 您应该使用。 请注意,您也可以使用,,,在日期对象作为比较操作。运算符不适用于这种情况,因为当您要根据列的部分内容匹配结果时很有用。请参阅http://www.sql- tutorial.net/SQL-LI

  • 问题内容: 有人可以透视一下JPA和Hibernate之间的区别吗?还是将这些互补的概念一起使用? 问题答案: 大致来说,JPA是java社区的一个标准,这里是specs,它是由Hibernate家伙实现(并扩展)的(此处提供一些信息)。作为规范,您将不会直接使用JPA,而是使用JPA实现。 请注意,如果要使用hibernateJPA扩展,将破坏与其他JPA实现的兼容性(尽管有些人会说“为什么要使

  • 问题内容: 我在MySQL中使用group_concat编写了一个查询,例如 并给出我的预期结果。 现在,我想使用休眠条件编写相同的查询。 问题答案: 简单的答案是 否定的 为什么? Hibernate仅支持在多个数据库中使用的通用功能/语法。Microsoft SQL Server中没有任何功能,也可能在其他数据库中。 解决方案: 您必须将其作为简单SQL查询执行。

  • 问题内容: jpa和休眠之间的异同是什么? 问题答案: JPA(Java持久性API)是持久性提供程序要实现的接口。Hibernate就是这样的JPA实现。