문제

I work With EJB 3. I have Base class A and there are dependency classes B,C,D

@Entity
@Table(name = "A")
public class A implements Serializable {

    @OneToMany(cascade = CascadeType.ALL)
    private List<B> bs;

    @OneToMany(cascade = CascadeType.ALL)
    private List<C> cs;

    @OneToMany(cascade = CascadeType.ALL)
    private List<D> ds;

}

I have question. How can I load all tables eagerly? I want to use em.find(A.class, id);

도움이 되었습니까?

해결책 2

I have found solution of my question .

@Entity
@Table(name = "A")
public class A implements Serializable {

    @OneToMany(cascade = CascadeType.ALL)
    @Fetch(FetchMode.SUBSELECT)
    private List<B> bs;

    @OneToMany(cascade = CascadeType.ALL)
    @Fetch(FetchMode.SUBSELECT)
    private List<C> cs;

    @OneToMany(cascade = CascadeType.ALL)
    @Fetch(FetchMode.SUBSELECT)
    private List<D> ds;

}

solution is @Fetch(FetchMode.SUBSELECT) . There is a good article about

Hibernate Fetching Strategies

다른 팁

You must use the fetch attribute in the OneToMany annotation so:

@Entity
@Table(name = "A")
public class A implements Serializable {

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private List<B> bs;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private List<C> cs;

    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.EAGER)
    private List<D> ds;

}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top