使用spring-data-jpa创建子查询

时间:2012-12-15 09:40:39

标签: spring spring-data-jpa

使用spring-data-jpa 1.2.0.RELEASE

我遇到querydsl问题

我有实体项目,其中包含一组促销活动,每个促销活动都有一个Enum的PromotionType。我正在尝试查找包含过滤促销集的所有项目,其中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());

然后我将得到没有正确的项目。但是如何过滤促销组只有SPECIAL促销类型?

请你能帮我一把吗?

0 个答案:

没有答案