我使用JPA作为ORM映射。我有一个目前有reservationID作为主键的预订表。我还有更多的列主要是date,fromTime和toTime。
我现在想要的是同一天的任何其他预订,不应该允许与时间冲突。
的示例:
我该怎么办?
我对这两种方法感到困惑。哪一个是更好的方法?
答案 0 :(得分:2)
在子句之间是1)。
这不是技术问题,而是业务逻辑问题。您想要禁止对一种资源进行冲突预订。因此,您必须计算两个时间间隔的重叠。这些可以重叠,尽管它们没有确切的开始和迄今为止。
您可以使用jodatime计算时间间隔的重叠:
Compare Intervals (JodaTime) in a list for overlap
或者您可以选择重叠预订:
select * from bookings where from >= parameter_to and to <= parameter_from
其中parameter_from
和parameter_to
是select的输入参数。
即使在您尝试保留预订之前,这也是业务验证。