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 プロモーション タイプのみを含めるにはどうすればよいでしょうか?
手を貸していただけませんか?