Maximo:如何使用JAVA读取应用程序的字段?

Maximo:如何使用JAVA读取应用程序的字段?,java,field,maximo,Java,Field,Maximo,这个问题可能很简单。我试图读取IBM Maximo应用程序的一个字段,并在方法getList()中使用该值。我要使用的值尚未保存在数据库中 下面是一些伪代码: @Override public MboSetRemote getList() throws MXException, RemoteException { MboSetRemote result = super.getList(); //Here is where i dont know how to do it

这个问题可能很简单。我试图读取IBM Maximo应用程序的一个字段,并在方法getList()中使用该值。我要使用的值尚未保存在数据库中

下面是一些伪代码:

@Override
public MboSetRemote getList() throws MXException, RemoteException {
    MboSetRemote result = super.getList();

    //Here is where i dont know how to do it
    Date field = getFieldValue(FieldName) 

    //Here is where i want to use the value
    String string = "....field..." 
    result.setWhere(string);

    return result;
}
谢谢大家,,
关于

我认为在where子句中使用字段值最简单、最安全的方法是使用bind变量,如下所示:

@Override
public MboSetRemote getList() throws MXException, RemoteException {
    MboSetRemote result = super.getList();

    //Here is where i want to use the value
    String string = "....:fieldName...";
    result.setWhere(string);

    return result;
}
请注意
字符串中
:fieldName
前面的冒号。当Maximo看到这一点时,它将在当前记录/Mbo上查找(不区分大小写)名为
fieldName
的属性,并将
:fieldName
替换为属性中的值——用引号或任何适用于属性类型(ALN、上限、日期等)的内容括起来

这种方法比您介绍的方法更好,因为它将使用Maximo的框架来防止SQL注入攻击等

也就是说,获取字段值的方法如下:

datefieldvalue=getMboValue(“FieldName”).getDate()


此外,我强烈建议您为自己准备一份Maximo的JavaDocs。你可以这样做。

如果我想提供更多帮助,我需要更多关于“我出错”的信息。非常感谢你们的帮助!!:)我按照你的建议做了,但我有个错误
com.ibm.db2.jcc.am.SqlDataException:日期时间值的字符串表示形式的语法不正确。
执行
string query=“:fieldName”时也是如此;System.out.println(查询)日志中没有打印任何内容。对不起@布道者。我在完成评论之前按了回车键。非常感谢您的支持!别担心。对于
.string表示…
位,我会将预期的where子句放在关系中,在屏幕上放置一个使用关系的字段,在关系的子对象上打开SQL调试,然后查看日志中的内容。如果你在那里得到同样的错误,你可能有理由进行PMR。或者您的数据是一个字符串,您正试图将其转换为日期?关于您的
System.out.println(查询),这样的输出将进入您的WebSphere的SystemOut.log文件,或者如果您正在使用WebLogic中的等效文件。但是,在Maximo中,使用这种语法进行日志记录是不好的。相反,您应该获得MBO记录器的句柄,并调用其
info()
debug()
或etc方法,这将导致您的消息被记录在Maximo记录的地方,而不是JVM的控制台。阅读API以获得MBO记录器的帮助。