gpt4 book ai didi

java - 如何使用 LocalDate 值查询 JPA LocalDateTime 字段?

转载 作者:行者123 更新时间:2023-12-03 20:06:12 25 4
gpt4 key购买 nike

我寻找一种方法来获取在 Postgresql 数据库中 TIMESTAMPTZ 类型的字段中保存的某个 LocalDateTime 日期上创建的对象列表。

为此,我尝试使用 JpaRepository:

List<Object> findByCreationDate(LocalDate date);

但我收到错误:
java.lang.IllegalArgumentException: Parameter value [2020-12-12] did not match expected type [java.time.LocalDateTime (n/a)]

我也尝试用相同的结果自己编写查询。

到目前为止我想到的解决方案:
  • 在 Java 中获取所有对象和过滤器(但我不想去那里,所以不)
  • 转换 LocalDateTime 中的 LocalDate 参数(但我假设在这种情况下我只会看到在同一时间创建的对象,所以不会。只有当我确定时间字段是午夜时,我才会考虑这个选项)。
  • 创建一个方法 findByCreationDateBetween(LocalDateTime startOfTheDay, LocalDateTime endOfTheDay)(有趣的选项,但我想在不修改 LocalDate 的情况下进行查询,并在一天的开始和结束时将其转换为 LocalDateTime。)

  • 我还试图找到一些能够在查询中“转换”LocalDate 中的 LocalDateTime 或比较 LocalDate 和 LocalDateTime 的年、月和日的函数,但没有成功。 creationDate 的类型应保持 LocalDateTime 和 TIMESTAMPTZ 类型的数据库字段。

    是否还有其他 Jpa @Query 替代方案,总体而言,这种情况下的最佳方法是什么?

    最佳答案

    您当前的解决方案很好。
    但是在 @Query 中,您可以使用 DATE() 转换列

    @Query(value = "SELECT * FROM Entity u WHERE DATE(creation_date) = ?1", nativeQuery = true)
    List<Entity> findByCreationDate(LocalDate date);

    关于java - 如何使用 LocalDate 值查询 JPA LocalDateTime 字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61997577/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com