Talend - 不能在tmap中使用globalMap.get()

时间:2017-03-21 14:33:35

标签: java talend

我在tmap中尝试了所有可能的组合,我感到非常沮丧

我将我的全局变量设置为tJava,如此

globalMap.put("table_id",22);

然后在组件行中向下调用tMap enter image description here

的out模式中的全局映射

globalMap.get("的table_id&#34);

并收到以下错误

Error Line: 2539
Detail Message: Type mismatch: cannot convert from Object to int
There may be some other errors caused by JVM compatibility. Make sure your JVM setup is similar to the studio.
我试过了

(Integer)globalMap.get("table_id")   
((Integer)globalMap.get("table_id"))   
Integer.parseint(globalMap.get("table_id"))

任何组合都不起作用,但只需输入数字22就可以了

任何帮助都会非常有帮助

3 个答案:

答案 0 :(得分:2)

答案在于这句话:

  

类型不匹配:无法从Object转换为int

所以,这绝对是一个Casting问题。我确信:(Integer)globalMap.get("table_id")应该有效!

如果它不起作用,错误信息肯定会与“类型不匹配”不同!

  • 注1:最好使用本机组件“tSetGlobalVar”在globalMap中存储值。

  • 注2:不应在运行时动态修改上下文变量,因为它们不是线程安全的(globalMap是!)。

答案 1 :(得分:0)

您可以使用上下文变量。

步骤1.在Context中声明变量。

步骤2.将变量分配给您指定值的位置。例如context.table_id = 22;

步骤3.在tMap组件中使用此上下文变量。

答案 2 :(得分:0)

我同意@mhassine那个 (整数)globalMap.get(" table_id")应该可以工作,但我只能使用

(int)globalMap.get("table_id")

也许这是6.3的怪癖,但是不能解释它