0

質問があります:

select p from Product p

これで期待どおりの結果が得られますが、列の1つ(これを呼びましょうmassiveDescription)が大きく、製品の完全なリストを照会しているため、除外したいと思います。

追加@Basic(fetch=FetchType.LAZY)しましたgetMassiveDescription()が、これによる違いはありません(生成されたSQLにはまだすべての列が含まれています)。

私は箱から出してすぐにGlassfishを使用しており、toplinkの必需品を使用しています。エージェントを構成するために何かしなければならないことがあるかもしれないと思ったので-javaagent:/path/to/toplink-essentials-agent.jar、GlassfishWebインターフェースを介してJVMオプションを追加してみました。次に、例外が発生します。

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

jta.jarしたがって、GlassfishWebUIのクラスパスサフィックスボックスに追加する必要があると思います。それは私に別の例外を与えます:

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, ...と奇妙なエラーが発生しますが、とにかく構文を推測しているだけでした。
4

1 に答える 1

0

Toplink Essentials はこれをサポートしていないことがわかりました。Eclipselink はそうしているので、ORM を移動しているように見えます。

于 2009-10-19T11:40:50.607 に答える