Compreendo como fazer o Where para isso, o problema é deixar isso genérico e escalável, já que colocar a clausula Where em todos os meus selects pode ser trabalhoso e até perigoso caso eu esqueça de colocar em algum.
A anotação @WHERE do hibernate aplica uma clausula where para toda query que envolve a classe que recebeu a anotação. Não queria usar ela pois é muito difícil ou até impossível realizar uma query sem o próprio hibernate inserir a clausula, fazendo com que eu NUNCA consiga realizar uma query para buscar os registros deletados
Já analisei meu caso e realmente acho melhor usar o soft delete
Uma opção é, em vez do soft delete, usar uma tabela de histórico.
Aí quando deletar, na verdade você move o registro pro histórico. Ou seja, lá só vai ter os deletados, e na tabela original os não deletados.
Ou se quiser continuar com soft delete, simplesmente não use a anotação e lembre de colocar um where em todas as queries. Não tem jeito, e assim como disseram acima, não sei qual é o problema. É tão comum isso...