JPQL для запроса сущности, подключенного к другому по @onetomany

StackOverflow https://stackoverflow.com/questions/3822948

  •  26-09-2019
  •  | 
  •  

Вопрос

Имеет:

class Container {

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

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

}

и

class Content {

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

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

}

Какой запрос JPQL получит субъекты контента, которые находятся в контейнере с определенным идентификатором и с определенным ссылками?

Это было полезно?

Решение

Не делая ассоциацию двунаправленной, вы могли бы сделать:

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

Но было бы легче сделать ассоциацию двунаправленной:

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

И сгенерированный SQL выглядит лучше (и эффективнее).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top