2010-09-29 5 views
1

A:JPQL à l'entité requête connecté à un autre par @OneToMany

class Container { 

    @Id 
    @Column(name="id") 
    protected long id; 

    @OneToMany 
    @JoinColumn(name="container_id", nullable=false) 
    protected Collection<Content> contents = new ArrayList<Content>(); 

} 

et

class Content { 

    @Id 
    @Column(name="id") 
    protected long id; 

    @Column(name="link_id") 
    protected long linkId; 

} 

Quelle requête JPQL va obtenir des entités de contenu qui sont dans le conteneur avec certains id et avec certains linkid?

Répondre

7

Sans faire le bi-directionnel d'association, vous pouvez faire:

SELECT c 
FROM Content c, Container container 
WHERE c MEMBER OF container.contents AND c.linkId = :linkId AND container.id = :containerId 

Mais il serait plus facile de faire le bi-directionnel d'association:

SELECT c from Content c 
WHERE c.container.id = :containerId AND c.linkId = :linkId 

Et le SQL généré semble mieux (et plus efficace) .

Questions connexes