我有一個查詢:如何使用延遲屬性加載在GlassFish + TopLink的要領
select p from Product p
這給了我我所期望的結果,但在列(姑且稱之爲massiveDescription
)的一個大,並且因爲我正在查詢我想要排除的產品的完整列表。
我加@Basic(fetch=FetchType.LAZY)
到getMassiveDescription()
但這沒有什麼區別(生成的sql仍包含所有列)。
我很開箱使用glassfish,它使用了toplink essentials。我認爲可能需要配置代理,因此我嘗試通過glassfish Web界面在JVM選項中添加-javaagent:/path/to/toplink-essentials-agent.jar
。然後,我得到一個異常:
java.lang.NoClassDefFoundError: javax/transaction/Synchronization
at ...
所以我想我需要添加jta.jar
到類路徑後綴框在GlassFish的Web UI。這給了我不同的例外:
java.lang.NoClassDefFoundError: oracle/toplink/essentials/transaction/JTASynchronizationListener
at oracle.toplink.essentials.transaction.JTATransactionController.<init>...
所以現在我正在追逐罐子。我以相同的方式將toplink-essentials.jar
添加到類路徑中,但我仍然得到相同的異常。
我有幾個問題:
- 版是GlassFish應該支持懶加載財產字節碼增強開箱?
- 如果不是,我錯過了正確的配置方式嗎?
- 我讀到,「推薦」的方式來實現這一點是使用一個項目,只選擇查詢中的實體的一部分。我更喜歡這一點,但找不到有關如何去做的任何文檔。交換
select p
爲select p.id, p.name, ...
給了我奇怪的錯誤 - 但我只是在猜測語法。
德拉蒙,從TLE切換到Eclipselink是非常容易的,你不會後悔的! – fvu 2009-10-23 10:35:44
不是。 GF從一開始就吐出一些相當混亂的信息。類加載和政策問題(其中一些仍未排序)。當然GF3沒有這個問題,但我不想切換。 – Draemon 2009-10-23 12:03:52