Bueno, eu saber “Dado um Asset, listar as Linhas que estão usando-o”.
As relações são
Um Linha tem varios Criações
Uma Criação tem varios Grupos
Um Grupo tem um Asset.
Eu poderia fazer em pseudo-select
select L.*
from L Linha, C Criação, G Grupo
where L.linhaId = C.linhaId
and C.criacaoId = G.criacaoId
and G.assetId = ?
mas eu tenho que “usar” tabelas demais e geral tem medinho que com muitos dados isso possa degradar o sistema e blablabla.
Eis que “descobri” que ha uma tabela LinhaAsset que é populada via trigger sempre que um Grupo é criado.
Bastaria eu fazer
select L.*
from L Linha, LA LinhaAsset
where L.linhaId = LA.linhaId
and LA.assetId = ?
Parece menos pior, mas um pouco sujo.
O problema é: todas as relações ja foram descritas em arquivos hbm.xml (deus sabe pq) e não sei se vale a pena adicionar esse relacionamento ou simplemente fazer uma query. O que vcs fariam?