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