代码之家  ›  专栏  ›  技术社区  ›  Sébastien

如何在JBoss5.1中推迟CMP2.1 bean的实际DB插入?

  •  0
  • Sébastien  · 技术社区  · 14 年前

    我正在将Weblogic 9应用程序迁移到JBoss 5.1,遇到以下问题:

    会话ejb管理CMP2.1实体。这些是在调用时插入的MyEntityLocalHome.create()方法。由于数据库表具有“notnull”约束,因此通常在调用create()方法之后设置的一些字段没有设置,并且插入失败。

    我知道如果管理器调用了create(myNotNullField);方法,传递正确的参数,问题就迎刃而解了。不幸的是,管理器使用的层在运行时发现应该调用哪个*LocalHome和哪个create()方法(通过内省),并且create方法是使用实体的PK字段发现的。这意味着层找不到参数不属于PK的create()方法。

    在JBoss文档中,我发现了一个参数(insert after ejb post create),它允许我在ejbPostCreate(…)方法之后推迟插入,但这也不能解决我的问题,因为LocalHome.create()插入DB后调用仍返回。

    感谢您的帮助:)

    1 回复  |  直到 14 年前
        1
  •  0
  •   Sébastien    14 年前

    这是通过在中使用cmp2.xjdbc2配置完成的standardjboss.xml,将ejb后处理后插入设置为false。