帮助理解CMP 1.1 finder的JDOQL查询元素

时间:2011-07-14 18:21:41

标签: java-ee ejb finder jdoql

我是一个相对Java EE轻量级,负责将旧应用程序从OC4j 10.x(JEE 1.1)移动到Glassfish 3.1(JEE 1.4)。我试图了解这个部署错误的含义以及我应该如何更新我的应用程序以解决它。

Caught java.lang.RuntimeException while processing CMP bean [FMSCatPval] for
application [FMS_nb_14]; module [FMS_nb_14-ejb.jar]: JDO74024: Missing or invalid
definition of JDOQL query elements for CMP 1.1 finder FMSCatPval.findByModel(int).

这是ejb-jar.xml中的相关EJB定义:

<entity>
    <display-name>FMSCatPval</display-name>
    <ejb-name>FMSCatPval</ejb-name>
    <home>com.fms.ejbs.pval.CatPvalHome</home>
    <remote>com.fms.ejbs.pval.CatPval</remote>
    <ejb-class>com.fms.ejbs.pval.CatPvalEJB</ejb-class>
    <persistence-type>Container</persistence-type>
    <prim-key-class>com.fms.ejbs.pval.CatPvalKey</prim-key-class>
    <reentrant>false</reentrant>
    <cmp-version>1.x</cmp-version>
    <cmp-field><field-name>pval</field-name></cmp-field>
    <cmp-field><field-name>model_num</field-name></cmp-field>
    <cmp-field><field-name>step</field-name></cmp-field>
    <cmp-field><field-name>cntl_cat</field-name></cmp-field>
    <cmp-field><field-name>chiSquare</field-name></cmp-field>
</entity>

我在网上发现了一些类似的帖子,但没有任何决议让我超越了驼峰。我认为我需要的是在实体声明中添加这样的东西:

<finder>
    <name>findByModel</name>
    <query>model_num = {0}</query>
</finder>

但我不确定。我假设我应该能够在旧代码库中找到可以转换为特定内容的内容,除非它隐式使用主键或某些内容。

任何指针都会受到赞赏。

1 个答案:

答案 0 :(得分:0)

我们最终采用“斜线和刻录”方法,从头开始重新创建所有EJB,并将它们与其余代码库重新集成。看起来没有其他好方法可以从我们想到的地方到达。