Maximo:如何使用JAVA读取应用程序的字段?
这个问题可能很简单。我试图读取IBM Maximo应用程序的一个字段,并在方法getList()中使用该值。我要使用的值尚未保存在数据库中 下面是一些伪代码: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
@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记录器的帮助。