按日期获取onetomany

时间:2018-04-10 12:09:39

标签: hibernate spring-boot jpa spring-data-jpa

目前我面临以下问题,

我想要什么

我想收到一个时间段的集合,其中日期只是今天或更高。

我当前的实体类

Class doctor     
@OneToMany(
            orphanRemoval = true,
            cascade = CascadeType.ALL
)
///////////WHERE startdate >= DATETIME.now() equivalent \\\\\\\\\\\\\\\\\\\\
private Set<TimeSlot> timeSlots = new HashSet<>();

在我的医生课上,我有一些时间段。时间段有一个startdate和enddate,我想过滤它以跳过数据库中的过去时隙。我只是不知道如何解决这个问题。

我尝试了什么

我尝试使用过滤器,它给了我整个列表。此外,我尝试使用where子句但由于需要固定数字或日期而无法工作。

我的问题

在这种情况下,你如何解决这类问题?我在jpa中唯一想要的是在实体类中添加一个where子句,该子句是伪代码:

WHERE startdate < DATETIME.now()

1 个答案:

答案 0 :(得分:1)

您可以使用Hibernate注释@Where来过滤下划线集合:

@OneToMany(...)
@Where("startdate >= now()")
private Set<TimeSlot> timeSlots = new HashSet<>();

请注意,此批注的参数是本机sql(now()是MySQL特定的函数)。