簡體   English   中英

如何在Glassfish和Toplink Essentials中使用惰性屬性加載

[英]How to use lazy property loading with glassfish + toplink essentials

我有一個查詢:

select p from Product p

這給了我預期的結果,但是其中一列(我們稱其為massiveDescription )很大,並且由於我要查詢的是產品的完整列表,因此我想排除它。

我在getMassiveDescription()添加了@Basic(fetch=FetchType.LAZY)getMassiveDescription()沒有區別(生成的sql仍然包括所有列)。

我幾乎是開箱即用的使用glassfish,它使用了toplink要素。 我以為可能需要做一些配置代理程序的工作,所以我嘗試通過glassfish Web界面在JVM選項中添加-javaagent:/path/to/toplink-essentials-agent.jar 然后我得到一個例外:

java.lang.NoClassDefFoundError: javax/transaction/Synchronization
        at ...

所以我想我需要在glassfish Web ui的classpath后綴框中添加jta.jar 那給了我一個不同的例外:

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, ...select p.id, p.name, ...會給我帶來奇怪的錯誤-但是我只是在猜測語法。

事實證明toplink基本要素不支持此功能。 Eclipselink可以,所以看起來我正在移動ORM。

暫無
暫無

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

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