2011-12-01 15 views

Respuesta

17
select distinct d from Document d inner join d.accessors a where a.id = :id 

Usted debe aprender cómo SQL se une el trabajo, y luego aprender a utilizar se une en JPQL. Eso es esencial. Encontrarás muchos tutoriales en línea. Google es tu amigo.

+0

@ user1071828 que se supone que haga clic en la marca para indicar que era la respuesta correcta ;-) – fommil

+0

puede usted por favor marque esta pregunta ? http://stackoverflow.com/questions/12051559/jpa-join-fetch-query-with-many-to-many – Panos

+0

Por favor, NO te olvides de los distintos. No pude entender por qué terminaba con entidades duplicadas: ') – Jelle

33
SELECT d FROM Document AS d WHERE :user MEMBER OF d.accessors 

Debe ser lo que necesita, y es más simple que unir tablas. simplemente no se olvide de utilizar el usuario como un parámetro en lugar de utilizar su ID:

query.setParameter("user", user); 
+0

Esta es la respuesta correcta de JPQL. –

+1

¿Cuál sería la diferencia si usamos '..: usuario en elementos (d.accessors)' en lugar de '...: usuario MEMBER OF (d.accessors)'? – Manuel

+2

@Manuel: [¿Cuál es la diferencia entre IN y MIEMBRO DE operadores jpql] (http://stackoverflow.com/questions/5915822/whats-the-difference-between-the-in-and-member-of-jpql- operadores) –

Cuestiones relacionadas