假设我有一个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的叉积。

是否同时使用distinct和join fetch以避免集合的N + 1 Select问题是否被视为一种好习惯?它有副作用吗?

最佳答案

您必须使用“ SELECT DISTINCT”,因为正在执行MyEntity和子级之间的笛卡尔积。

对不起我的英语不好

关于java - 集合获取连接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9014388/

10-09 05:48