java - JPA查询: how to use select * from my_table where created_at > now() - INTERVAL '3 months' ?

标签 java jpa

如何添加条件为 created_at > now() - INTERVAL '3month'where 子句?

JPA 实体列:

@Column(name = "created_at")
@CreationTimestamp
@Temporal(TemporalType.TIMESTAMP)

最佳答案

您可以使用命名查询。

用以下方式注释您的实体类:

@NamedQuery(name = "Entity.findByCreatedDateGreaterThan", query = "FROM Entity e WHERE u.createdDate > :date")

要使用此命名查询:

public List<Entity> getEntityByCreatedDateGreaterThan() {
    Calendar calendar = Calendar.getInstance();
    calendar.add(Calendar.DAY_OF_MONTH, -90);
    Query namedQuery = getEntityManager().createNamedQuery("Entity.findByCreatedDateGreaterThan");
    namedQuery.setParameter("date", calendar.getTime());
    return namedQuery.getResultList();
}

关于java - JPA查询: how to use select * from my_table where created_at > now() - INTERVAL '3 months' ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59213643/

相关文章:

java - JPA删除在后台执行更新查询

java - JPA - 使用包含附加信息的多对多表格

jpa - JakrataEE 代码在带有 JTA 数据源的 TomEE 上运行,但由于 RESOURCE_LOCAL 配置而失败

java - DbUnit Oracle 中的 NoSuchTableException

SQL 的 Java 日期格式

java - 为什么for循环不直接接受 boolean 值?

java - 如何处理JPA存储库查询方法中的多个字段?

java - ConcurrentHashMap 与同步 HashMap

java - 使用 ExecutorService.invokeAll 时,即使发生异常,也有一种方法可以获得所有响应

java - .forEach 和 .sort 不起作用,不能在 block 中设置断点