想象一个简单的网页,您可以像这样搜索预订:

picture of web page http://locuslive.com/webdrive/booking.png


如果未填写预订号字段,我想返回所有行。
如果填写了预订号字段,我只想返回该行。


我一直在Hibernate(使用基础MySQL数据库)中使用模式来完成此操作,例如:

AND (:bookingNum IS NULL OR (:bookingNum IS NOT NULL AND :bookingNum = booking.bookingNumber))


我最近看到了一些weird performance issues,这让我想知道这里是否有更好的模式可以使用。我确定非Hibernate查询必须存在类似的问题。

别人在这种情况下做什么?

谢谢,

D.

最佳答案

使用Hibernate条件查询,仅当BookingNum不为null时添加谓词。

10-06 09:16