从coherence服务器返回null

时间:2013-03-26 03:08:02

标签: java caching oracle-coherence

当我在缓存数据库上运行时,我的缓存数据库中有一些数据,如果密钥包含字母和数字或数字的组合我能够获取数据,如果它是只有数字的单个密钥即使我能够查看列表中的数据,我也无法检索数据。

Map (ele): list
2222222 = 
200:20:2:2:1:1:Thu Feb 02 00:00:00 2012:2:Thu Feb 02 00:00:00 2012:Thu Feb 02 00:00:00 2012

GC2 = 
200:20:2:2:1:1:Thu Feb 02 00:00:00 2012:2:Thu Feb 02 00:00:00 2012:Thu Feb 02 00:00:00 2012

Map (ele): get GC2
 200:20:2:2:1:1:Thu Feb 02 00:00:00 2012:2:Thu Feb 02 00:00:00 2012:Thu Feb 02 00:00:00 2012

Map (ele): get 2222222
null

当我只给出get中的数字时,我会变为空。

任何想法?

1 个答案:

答案 0 :(得分:2)

我自己想通了,如果我们将键定义为String类型,并且由于coherence服务器的内部工作而只包含数字,则返回null。

简而言之

键定义为字符串 - 键包含字母数字 - WORKS

键定义为字符串 - 键仅包含字母 - WORKS

键定义为字符串 - 键仅包含数字 - 不工作

所以我做的是,在将数据放入缓存之前,我检查了密钥是否只包含数字

if (code.matches("[0-9]+")) 

如果是,则将密钥存储为整数,否则将其存储为字符串。

现在我可以检索所有案例的值。

另一种解决方案 -

而不是将键存储为整数,即使它是一个存储为字符串的数字,然后在执行时

得到\ 111

这也会检索正确的值