Spring Data和QuerydslBinderCustomizer:绑定Map <string,Entity =“”>中的任何值

时间:2019-01-14 16:58:19

标签: spring-data querydsl

我正在尝试将某些类属性从List<Entity>迁移到Map<String, Entity>

例如,我的实体具有以下Map(以前的categoryContentsList<CategoryContent>):

@OneToMany(cascade = CascadeType.ALL, mappedBy = "category", fetch = FetchType.EAGER)
@MapKey(name = "language")
private Map<String, CategoryContent> categoryContents;

在我的Spring Data Repository中,我试图配置自定义绑定。以前,当我拥有列表时,我的自定义设置如下:

public interface PublicationCategoryRepository extends JpaRepository<Category, Integer>, QueryDslPredicateExecutor<Category>, QuerydslBinderCustomizer<QCategory> {

        @Override
        default void customize(final QuerydslBindings bindings, final QCategory category) {
            bindings.bind(String.class).first(
                    (StringPath path, String value) -> path.containsIgnoreCase(value));
            bindings.bind(category.categoryContents.any().name).first((path, value) -> category.categoryContents.any().name.containsIgnoreCase(value)
                            .or(category.description.containsIgnoreCase(value)));
            bindings.excluding(category.userCategories);
        }

}

绑定任何categoryContents.name属性(来自CategoryContent类)。有什么方法可以使用地图应用此自定义?

MapPath没有任何方法可以查询Map中的任何值。

任何帮助将不胜感激。

0 个答案:

没有答案