问题描述
我尝试获取可用的酒店进行预订。
想法:
获取所有酒店并删除不可用的酒店。 (如果旅馆在一定时间内被保留,则该旅馆不可用-在功能上,有参数from
-> to
)。我按照stackoverflow.com上的示例进行操作并生成以下代码:
fun availableHotelsBetweenDates(from: zoneddatetime,to: zoneddatetime): Specification<Hotel> = Specification<Hotel> { root,query,cb ->
val reservationsBetweenDates: Subquery<HotelReservation> = query.subquery(HotelReservation::class.java)
val subqueryRoot = reservationsBetweenDates.from(HotelReservation::class.java)
val join: Join<Hotel,HotelReservation> = root.join("reservations",JoinType.LEFT)
reservationsBetweenDates.select(subqueryRoot.get("id"))
reservationsBetweenDates.where(activeReservationsBetweenDates(from,to).toPredicate(subqueryRoot,cb))
reservationsBetweenDates.distinct(true)
cb.not(join.get<Long>("id").`in`(reservationsBetweenDates))
}
此函数返回0个实体(应返回2个-因为我有3家酒店,并且只有一间酒店预订)。
函数activeReservationsBetweenDates(from,to
)返回Specification<HotelReservation>
和from
之间的所有HotelReservation的to
。
如何对嵌套字段的子查询正确使用不在?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)