Es que me genera mal la sentencia SQL con el hql que me has pasado. Me da syntax error el motor de base de datos:
select autor0_.[Id] as Id1_4_, autor0_.[FechaNacimiento] as FechaNac2_4_, autor0_.[Nombre] as Nombre3_4_ from [dbo].[Autores] autor0_ where autor0_.[Id] not in (select . from [dbo].[Libros] libro1_, dbo.[LibrosAutores] autores2_, [dbo].[Autores] autor3_ where libro1_.[Id]=autores2_.[IdLibro] and autores2_.[IdAutor]=autor3_.[Id] and libro1_.[Id]=@p0) ;@p0 = 98318 [Type: Int64 (0)] ¿Has visto el select . from...? Curioso... En cambio, he hecho esto: from autor in Autor where not :idBook in (select libro.ID from autor.Libros libro) Y me genera este SQL que sí me da un resultado correcto pero creo que es poco eficiente la consulta y mal hecha: select autor0_.[Id] as Id1_4_, autor0_.[FechaNacimiento] as FechaNac2_4_, autor0_.[Nombre] as Nombre3_4_ from [dbo].[Autores] autor0_ where @p0 not in (select libro2_.[Id] from dbo.[LibrosAutores] libros1_, [dbo]. [Libros] libro2_ where autor0_.[Id]=libros1_.[IdAutor] and libros1_.[IdLibro]=libro2_. [Id]) Pues eso, al menos ya tengo algo... On 23 mar, 16:01, José F. Romaniello <[email protected]> wrote: > si me mostraras por que fallan las dos formas que te dije, me sería más > fácil > > El 23 de marzo de 2011 11:37, Juan Cuello <[email protected]> escribió: > > > > > > > > > Ni una ni otra :P > > > Seguiré mirando, > > > Gracias > > > On 23 mar, 13:38, José F. Romaniello <[email protected]> wrote: > > > Creo que en Hql podria funcionar algo así; > > > from Autor a > > > where not a in (select l.Autores from Libro l where l.id = @libro) > > > > Y en linq algo así > > > > from a in session.Query<Autor> > > > from l in session.Query<Libro>() > > > where l.id = .. && !l.Autores.Contains(a) > > > select a; > > > > El 23/03/11, Juan Cuello <[email protected]> escribió: > > > > > Hola buenas, > > > > > Estoy haciendo una consulta HQL y queda patente que no sirvo para > > > > esto. > > > > > Tengo una relación many-to-many entre Libros y Autores, y quiero hacer > > > > una consulta que me devuelva los autores que no están relacionados con > > > > un libro. > > > > > Mi primera idea ha sido con HQL: from c in Autor where :idBook not in > > > > (c.Libros) y me da un sintax error en la generación de SQL > > > > > En LINQ no tengo ni idea de cómo hacerlo. > > > > > Ayuda please > > > > > -- > > > > Para escribir al Grupo, hágalo a esta dirección: > > > > [email protected] > > > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano > > > > -- > > > Enviado desde mi dispositivo móvil > > > -- > > Para escribir al Grupo, hágalo a esta dirección: > > [email protected] > > Para más, visite:http://groups.google.com/group/NHibernate-Hispano -- Para escribir al Grupo, hágalo a esta dirección: [email protected] Para más, visite: http://groups.google.com/group/NHibernate-Hispano
