Вопрос

Is it possible to use LAZY loding in OneToMany unidirection mapping? In my example, BookShelf have a list of Book as LAZY loading.

I need to retrieve bookList by BookShelf's ID, again. I would like to know possible way selet many from OneToMany unidirection mapping.

Book.java

@Entity
public class Book implements Serializable {
    @Id
    private String id;
    ....
}

BookShelf.java

@Entity
public class BookShelf implements Serializable {
    @Id
    private String id;
    @OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY)
    @JoinColumn(name = "BOOK_SHELF_ID", referencedColumnName = "ID")
    private List<Book> bookList;
}

I would like to find book list by BookShelf using JPQL, not native query.

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

Решение

Use JOIN table strategy. As below;

Query q =  em.createQuery("SELECT bs.bookList FROM BookShelf bs LEFT JOIN FETCH bs.bookList WHERE bs.id = :bookShelfId");
q.setParameter("bookShelfId", bookShelfId);
List<Book>  result = q.getResultList();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top