【问题标题】:Adding a new row to another table using java in Maximo在 Maximo 中使用 java 将新行添加到另一个表
【发布时间】:2015-03-02 01:21:23
【问题描述】:

我正在使用两个表:KINCIDENT 和 ASSISTANT。主要的是 KINCIDENT,两者使用 ID 链接。我可以从应用程序中添加一个新行,但我想使用 Java 来做到这一点。我尝试了以下代码,但没有成功:

MboSetRemote assistSet = MXServer.getMXServer().getMboSet("ASSISTANT",userInfo);
MboRemote newAssist = assistSet.add();
newAssist.setValue("LOCATION",x);
newAssist.setValue("INCNUM",y);
assistSet.save();

我检查了该行是否已添加,但未添加,而且我也没有在数据库中找到任何新条目。我错过了什么吗?

【问题讨论】:

    标签: java maximo


    【解决方案1】:

    只要您的代码正在运行,您就应该在助手表中看到该新记录,但您肯定不会在屏幕上看到它。要使记录出现在屏幕上,您必须了解 Maximo 的“缓存”系统才能获取和编辑支持屏幕的集合的确切实例,而不仅仅是任何实例(或像您在那里创建的全新实例)。

    我不知道您的 Java 代码在哪里(一个应用程序 bean、一个 MBOSet、一个 MBO 或一个字段类),并且我不知道您要挂钩的事件/触发器(添加新记录、保存现有记录或其他东西),这两者都很重要。我假设您在“add()”方法中运行的 KINCIDENT 对象的 MBO 类中;这意味着当创建新的 KINCIDENT 时,您想要添加新的 ASSISTANT 记录。作为该触发器的一部分运行应该意味着当用户添加新记录时,您已经连接到 KINCIDENT 对象的屏幕实例。要使您的 ASSISTANT 记录出现在支持屏幕的集合实例中,您需要遵循屏幕从 KINCIDENT 到 ASSISTANT 的关系。我假设在屏幕上使用关系将 ASSISTANT 表设置为 KINCIDENT 表的子表。在这种情况下,您只需要使用该关系获取 ASSISTANT 集。假设您的关系与集合(“ASSISTANT”)命名相同,它看起来像这样:

    MboSetRemote assistSet = getMboSet("ASSISTANT");
    MboRemote newAssist = assistSet.add();
    newAssist.setValue("LOCATION",x);
    newAssist.setValue("INCNUM",y);
    

    这不会保存您的记录(将其保存到数据库中),但您希望将您的保存保持在最低限度。让用户通过点击工具栏中的“保存”/磁盘图标来指定是否应保存记录。

    【讨论】:

    • 是的,它们通过名为 ASSISTANT 的关系链接,但您建议的代码与我的完全相同。如何指定 ASSISTANT 关系而不是 ASSISTANT 表?谢谢
    • 不完全一样。这里的关键是该集合是从屏幕上的MBO 记录 之一的起点检索的。在您的代码中,您从 server 获取一个 new 集,与任何现有集无关。您的代码将始终创建一个全新的集合实例,不与其他任何东西绑定。
    猜你喜欢
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-19
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    相关资源
    最近更新 更多