我需要为用户返回下一次会议。例如,对于userId 1,下次会议将是今天(MeetingId 1),因为今天是02-02-2019 13:12 PM。如果我今天下午15:00搜索下一次会议,则下一次会议将在09-12-2019(MeetingiD 2)。如果我明天搜索下一次会议,下一次会议将在09-12-2019(MeetingiD 2)。

java - 在JPA查询中查找下一个日期/时间-LMLPHP

我正在使用MYSQL数据库和查询(但我不知道如何精确搜索):

@Query(select m from meeting m inner join m.group g inner join g.user u where u.id = :userId order by m.meetingDate desc)
Meeting getNextMeeting(@Param(userId) long userId)


public class Meeting {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private long id;
    @OneToMany()
    private Group group;
    private Date meetingDate;
    private Time meeting;
}

public class Group {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private long id;
    @OneToOne(fetch = FetchType.LAZY)
    @JoinColumn(name = "userId",nullable = false)
    private User user;
}

public class User {
    @Id
    @GeneratedValue(strategy= GenerationType.IDENTITY)
    private long id;
}

最佳答案

要只召开下一次会议,您需要使用以下条件并限制1,以过滤掉所有将来的事件。

如果您使用的是Postgres,则下面的查询有效

(date m.date + time m.time) > CURRENT_TIMESTAMP and limit 1

关于java - 在JPA查询中查找下一个日期/时间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59139658/

10-14 12:08
查看更多