簡體   English   中英

lazy =“ false”在休眠4.3.x中不起作用

[英]lazy=“false” not working in hibernate 4.3.x

我正在嘗試使用以下代碼在休眠狀態下測試延遲加載的功能。

        Query query = session.createQuery("From Publishers as publisher where publisher.publisherName <= :name");
    query.setString("name", "penguin");
    Publishers publisher = (Publishers)query.iterate().next();
     Set<Books> booksByPublisher  = new HashSet<>();
    booksByPublisher = publisher.getBooks();
    session.close();
    System.out.println(publisher.getPublisherName());
   for(Books book : booksByPublisher) {
        System.out.println(book);
    }

出版商和書籍類的映射分別如下:

<class name="newapplication.domain.Publishers" table="PUBLISHERS" >
    <id name="publisherId" type="integer" column="PUBLISHER_ID"/>
    <property name="publisherName" type="string" column="PUBLISHER_NAME"/>
    <set name="books" table="BOOKS_PUBLISHERS" inverse="true" fetch="join" lazy="false">
        <key column="publisher"/>
        <many-to-many class="newapplication.domain.Books" column="book" />
    </set>
</class>



    <class name="newapplication.domain.Books" table="BOOKS" >
    <id name="bookId" type="integer" column="BOOK_ID">
        <generator class="sequence">
            <param name="sequence">BOOKIDSEQUENCE</param>
        </generator>
    </id>
    <property name="bookName" type="string" column="NAME"/>
    <many-to-one name="author" class="newapplication.domain.Authors" column="AUTHOR"/>
    <many-to-one name="cover" class="newapplication.domain.Covers" column="COVER"/>
    <set name="publishers" table="BOOKS_PUBLISHERS" lazy="false">
        <key column="BOOK"/>
        <many-to-many class="newapplication.domain.Publishers" column="PUBLISHER"/>

    </set>
</class>

盡管在發布者類中設置了lazy =“ false”加載,但我收到以下錯誤。

Exception in thread "main" org.hibernate.LazyInitializationException: could not initialize proxy - no Session

怎么了 不應該在為發布者的對象命中數據庫后立即加載Set嗎?

您在“ Books中的多對一關聯是懶惰的; 這就是異常的來源。

默認情況下,與使用默認的一對一關聯的JPA標准(使用JPA樣式映射時)相反,使用Hibernate本機映射時所有關聯都是惰性的。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM