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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top