Коллекция выборки присоединиться - PullRequest
1 голос
/ 26 января 2012

Предположим, у меня есть сущность JPA и запрос:

@Entity
public class MyEntity {

    @OneToMany(fetch = FetchType.LAZY)
    private List<ChildEntity> children = new ArrayList<ChildEntity>();
}


public List<MyEntity> fetchAll() {
    return em.createQuery("select distinct e from MyEntity e join fetch e.children")
            .getResultList();
}

Без отдельного ключевого слова это будет перекрестным произведением MyEntity и e.children.

Считается ли хорошей практикой использовать как отдельные, так и выборочные соединения, чтобы избежать проблемы N + 1 Select с коллекциями? Есть ли у него побочные эффекты?

Ответы [ 2 ]

1 голос
/ 31 мая 2012

Вы должны использовать «SELECT DISTINCT», потому что исполняется декартово произведение между MyEntity и детьми.

Извините за мой английский

0 голосов
/ 26 января 2012

разве внутреннее соединение не помогает?

public List<MyEntity> fetchAll() {
    return em.createQuery("select e from MyEntity e inner join fetch e.children")
            .getResultList();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...