我对使用 spring-data-jpa 1.2.0.RELEASE 的 querydsl 有疑问
我有包含一组促销的实体项目,每个促销都有促销类型,它是一个枚举。我正在尝试查找包含一组过滤促销的所有项目,其中 PromotionType == PromotionType.Special。我想我会通过一个子查询来实现这样的促销活动:
谓词:
public class ItemPredicates {
private static QItem $ = QItem.item;
public static BooleanExpression getSpecialItems() {
return $.promotions.any().promotionType.eq(PromotionType.SPECIAL);
}
}
Test:
//prepare data
Item item = new Item();
item.setPromotions(Sets.newHashSet(promotion(PromotionType.SPECIAL), promotion(PromotionType.NORMAL)));
//assertion
Item specialItems = itemRepository.findOne(ItemPredicates.getSpecialItems());
因此,我期望只有特殊类型的促销过滤掉促销的项目,而不是我总是得到一个有一组促销的项目。如果我将测试更改为此:
Test:
//prepare data
Item item = new Item();
item.setPromotions(Sets.newHashSet(promotion(Promo tionType.NORMAL)));
//assertion
Item specialItems = itemRepository.findOne(ItemPredicates.getSpecialItems());
然后我不会得到正确的项目。但是如何过滤促销集以仅具有特殊促销类型?
请问你能帮我一把吗?