[英]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.