(N) Junção automática de hibernação
-
09-06-2019 - |
Pergunta
Estou desenvolvendo uma aplicação web usando NHibernate.Você pode me dizer como escrever uma consulta NHibernate para a seguinte consulta SQL:
SELECT v1.Id
FROM VIEW v1
LEFT JOIN VIEW v2 ON v1.SourceView = v2.Id
ORDER BY v1.Position
É basicamente uma junção automática, mas não sei como escrever isso no Nhibernate.Digamos que os nomes das propriedades sejam iguais aos nomes das colunas da tabela.
Solução
Você poderia simplesmente realizar o select na entidade original e fazer a associação entre os dois objetos "lazy = false".Contanto que as entidades sejam mapeadas, ambas serão retornadas e você não receberá uma exceção de carregamento lento ao tentar acessar o objeto.
Se você não quiser mapear "lazy=false", também poderá iterar pelos resultados e executar algum tipo de operação (como perguntar se é nulo;if(v1.AssociatedObject == null){}) para garantir que os dados sejam carregados enquanto a sessão estiver aberta.
Atualizar:
Eu acho que na verdade existe um melhor do que NHibernateUtil.Initialise() que pode inicializar uma coleção sem ter que percorrê-la.