Consultando em uma lista (IN) - Predicate e Specification - JPA CriteriaBuilder

Olá, tenho que criar uma consulta dinâmica baseada no seguinte cenário em uma aplicação RESTFUL utilizando Springboot e JPA (estou utilizando JpaSpecificationExecutor):

Possuo duas classes entidades (Entity), a primeira é a de produtos:

Produto
Long id;
String descricaoDetalhada;
List<Categoria> categorias;

E a segunda é referente a categoria:

Categoria
Long id;
String nome;
Como podem ver um produto pode possuir várias categorias.

Tenho um endpoint com dois parâmetros: Descricao e Categorias.

Abaixo estou enviando o código da classe Specification onde preciso criar o segundo Predicate para realizar o filtro por categorias, pois o filtro por descrição já esta pronto.

          public class ProdutoSpecification implements Specification<Produto>{

                private static final long serialVersionUID = 1L;

                private String descricao;
                private String categorias;

                List<Predicate> predicates = new ArrayList<>();

                public ProdutoSpecification(String descricao, String categorias) {
                    super();
                    this.descricao = descricao;
                    this.categorias = categorias;
                }

                @Override
                public Predicate toPredicate(Root<Produto> root, CriteriaQuery<?> query, CriteriaBuilder builder) {
                   //Predicate para o filtro de descrição
                    if (descricao != null) {

                        String PalavraChave[] = descricao.split(" ");
                       for (String filtro : PalavraChave) {
                            predicates.add(builder.like(builder.upper(root.get("descricaoDetalhada")), "%"+ filtro.toUpperCase() + "%"));
                        }
                     }

                   //Predicate para o filtro por categorias
                    if (categorias != null) {
                       List<Long> ids = URL.decodeLongList(categorias);

                       //AQUI DEVERÁ TER A INSTRUÇAO QUE CRIA O PREDICATE ONDE VERIFICA SE UM CÓDIGO DE CATEGORIA É PRESENTE EM ALGUM PRODUTO.
                     }
                 return builder.and(predicates.toArray(new Predicate[0]));
                }
            }

A variável categorias na classe é transformada em um List<Long> ids.

Como crio um Predicate onde verifico se um das categorias presente no produto esta dentro da ids, atendendo assim o parâmetro de consulta? Assim eu conseguiria filtrar os produtos que possuem determinadas categorias.

A região comentada no código irá receber a instrução para criação do Predicate.

Atenciosamente,

Gonzaga

Olá pessoal, consegui solucionar:

 Long[] ids = URL.decodeLongList(categorias);
    if (tipos!=null) {
        predicates.add(root.join("categorias").get("id").in(ids));
    }

Muito obrigado.