gpt4 book ai didi

java - Spring数据查询日期时间只有日期

转载 作者:IT老高 更新时间:2023-10-28 13:58:05 25 4
gpt4 key购买 nike

我有这个数据模型

public class CustomerModel{

@Column
@Type(type="org.joda.time.contrib.hibernate.PersistentDateTime")
private DateTime membershipDate;
//Other properties and getters
}

还有下面的 repo

public interface CustomerRepo  extends Repository<CustomerModel, Long>{}

我想做的是。检索给定日期的所有用户,例如(2013 年 8 月 1 日加入的成员),但问题是在我的数据库上,membershipDate 有时间。如何忽略时间并检索给定日期的所有用户?

最佳答案

不幸的是,使用 JodaTime 解决此问题的唯一方法是使用 Between 关键字并使用两个 DateTime 实例组成一天。

interface CustomerRepo extends Repository<CustomerModel, Long>{

List<CustomerModel> findByMemberShipDateBetween(DateTime start, DateTime end);
}

如果您的域模型在内部使用 Java Date,您可以使用这种样式:

interface CustomerRepo extends Repository<CustomerModel, Long>{

List<CustomerModel> findByMemberShipDate(@Temporal(TemporalType.DATE) Date date);
}

@Temporal 注释不是自定义 Spring Data JPA 注释,因为当前不允许在参数上使用普通 JPA 注释。不幸的是,这只适用于 Java Date 的原因是当前 JPAPI 的限制。 Query 上的 setParameter(…) 方法只为 Date 类型的参数采用 TemporalType。我们可以尝试在参数绑定(bind)上转换 JodaTime 对象,但我猜持久性提供者会因为类型不匹配而拒绝它(Date VS. DateTime)。

关于java - Spring数据查询日期时间只有日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18082276/

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