jpa获取数据库当前时间_基于当前日期+时间为实例查询JPA实体的最佳方式是什么?...

我有了两个日期,的startDate和结束日期的实体类型:基于当前日期+时间为实例查询JPA实体的最佳方式是什么?

import org.joda.time.DateTime;

@Entity

public class Thing {

@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")

private DateTime startDate;

@Type(type = "org.jadira.usertype.dateandtime.joda.PersistentDateTime")

private DateTime endtDate;

}

我有一个Spring数据JPA库(扩展CrudRepository)这个实体类型,并在那里我需要一种方法来查询所有Thing S中的“活动”,其中“主动”被定义为

的startDate < =现在< =结束日期

我尝试了JPQL查询这个样子,但它不是产生预期ED导致我们的一些测试:

@Query("select t from Thing t where t.startDate <= CURRENT_TIMESTAMP and t.endDate >= CURRENT_TIMESTAMP")

public Iterable findAllActive();

我也尝试了方法名,会议查询,它不产生我所期望的结果,但它的尴尬:

public Iterable findByStartDateBeforeAndEndDateAfter(DateTime minStartDate, DateTime maxEndDate);

我可以包在我@Service像

public Iterable getActiveThings() {

DateTime now = DateTime.now();

return repository.findByStartDateBeforeAndEndDateAfter(now, now);

}

所以服务接口是干净的,但回购接口是丑陋而笨拙(我的想法是)。

是否有更好的方法来构建这个使用JPA的存储库查询方法,一个更好的基于方法名称的查询或一个显式的JPQL查询?我宁愿不必在代码中手动构建Query对象(现在我甚至没有Repository的具体类,只有一个接口),但如果这是我考虑的最佳方式。

2014-02-18

E-Riz

+0

”CURRENT_TIMESTAMP“的值是多少? –

+0

'CURRENT_TIMESTAMP'是JPQL中的一个内置函数,它返回数据库当前的日期和时间。请参阅http://stackoverflow.com/a/1659088/639520 –

+0

我写了JPQL查询涉及日期比较工作正常,但我使用默认'日期'类型不同于您指定的类型。尝试使用'java.util.Date'来查看'@ Type'是否导致问题。 –

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值