2014-03-28 35 views
2

我有一些標記爲LAZY的字段。爲了加載LAZY字段只是在會話打開時訪問getter,所以ORM代理執行select子查詢。在運行時暫時將FetchType.LAZY更改爲FetchType.EAGER(休眠/ JPA)

但是,如果您需要將完全解析的對象作爲由join獲取的渴望關係,那麼這是不理想的。

如何才能將某些字段標記爲EAGER臨時爲只有一個查詢?

這是可能與JPA標準或只有像Hibernate專有擴展?

回答

4

Hibernate有一個叫做Fetch Profiles的功能可以解決這個問題。它需要訪問Hibernate Session,但您可以使用unwrap()EntityManager訪問它。

如果你想要一個純粹的JPA解決方案,可以裝載在需要預先抓取的用例對象時使用的查詢與join fetch

UPDATE: JPA 2.1(由Hibernate 4.3實現)支持類似的特徵來獲取配置文件 - entity graphs