0

我有一个查询:

select p from Product p

这给了我期望的结果,但是其中一列(我们称之为它massiveDescription)很大,并且由于我正在查询我想要排除它的产品的完整列表。

我添加@Basic(fetch=FetchType.LAZY)了,getMassiveDescription()但这没有任何区别(生成的 sql 仍然包括所有列)。

我使用的 glassfish 几乎是开箱即用的,它使用 toplink 必需品。我想我可能需要做一些事情来配置代理,所以我尝试-javaagent:/path/to/toplink-essentials-agent.jar通过 glassfish Web 界面添加 JVM 选项。然后我得到一个例外:

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 pselect p.id, p.name, ...了我奇怪的错误 - 但无论如何我只是在猜测语法。
4

1 回答 1

0

原来 toplink 要领不支持这一点。Eclipselink 确实如此,所以看起来我正在移动 ORM。

于 2009-10-19T11:40:50.607 回答