[英]Hibernate criteria and/or with many-to-many
這是我正在運行的查詢:
List<Coupon> coupons = getDb().createCriteria(Coupon.class)
.add(Restrictions.le("validFrom", startTime.getTime()))
.add(Restrictions.ge("validUntil", startTime.getTime()))
.add(Restrictions.eq("user", user))
.createAlias("spots", "spotsAlias")
.add(Restrictions.or(
Restrictions.eq("isGlobal", true),
Restrictions.eq("spotsAlias.id", spot.getId())
))
.add(Restrictions.eq("isRedeemed", false))
.add(Restrictions.eq("isDeleted", false))
.add(Restrictions.eq("isActive", true))
.addOrder(Order.asc("isGlobal"))
.addOrder(Order.desc("validFrom"))
.list();
應該可以得到所有的優惠券:
優惠券與景點之間存在多對多關系。 關系有效-此查詢確實返回與所查詢地點特別相關的優惠券。 不幸的是,即使數據庫中根本沒有“本地”優惠券,它也不會返回全局優惠券。
有什么建議么? 幫助將不勝感激!
嘗試使用析取並查看:
.add( Restrictions.disjunction().add(Restrictions.eq("global", Boolean.TRUE))
.add(Restrictions.eq("spotsAlias.id", spot.getId())))
另外,如果global是您實體中的屬性,則需要使用:
Restrictions.eq("global", Boolean.TRUE)
另外,如果您參考限制類,則僅具有
eq(String propertyName, Object value)
將對象作為第二個參數而不是原始類型的方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.