Dúvida: Entidade x Categoria

Seguinte, no sistema aqui várias entidades possuem Categorias, que por sua vez são hierárquicas (Categoria hasMany Categoria).
Na hora de gravar uma entidade qquer, eu tenho duas opções,

ou coloco todas as categorias da hierarquia no registro (@ManyToMany categorias na entidade)

ou gravo só a Categoria mesmo (private Categoria categoria) e na hora de fazer search, monto a query de modo que pesquise em toda a hierarquia, por exemplo Automóveis:Imposto e lancei “IPVA” com categoria “Imposto” na hora de pesquisar por automóvel eu teria que pesquisar onde a categoria é Automóvel or categoria é Imposto (toda a árvore)

Alguma sugestão ?