Spring Data и QuerydslBinderCustomizer: привязка для любого значения из карты <String, Entity> - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь перенести некоторые атрибуты класса из List<Entity> в Map<String, Entity>

Например, моя сущность имеет следующую Карту (ранее categoryContents была List<CategoryContent>):

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

В моем хранилище данных Spring я пытаюсь настроить пользовательские привязки. Ранее, когда у меня был список, моя настройка была следующей:

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 не имеет метода для запроса какого-либо значения с карты.

Любая помощь будет высоко ценится.

...