【发布时间】:2013-01-27 05:42:12
【问题描述】:
我从对象列表中的对象中获取一个字符串值。
transitionName = transitionList.get(m).getTransitionName().toString();
以及来自 EJB 查询检索到的对象的另一个字符串值。
changeItem = changeItemFacade.getChangeItem(changeGroupList.get(1));
char tempNewString[] = changeItem.getNewstring();
newString=new String(tempNewString);
现在这个 Char[] 与 String 的比较是因为包含 changeItem 的 Oracle 表已将列 NewString 定义为 CLOB。 并且 ejb 实体将变量“NewString”的类型定义为 Char[] 数组。 所以我必须在进行比较之前将其转换为字符串。
问题是这个 if 语句总是返回 false 并且没有被执行。
if(transitionName.equalsIgnoreCase(newString)){}
当我尝试记录值 (Logger.Debug) 时,它完美地显示了服务器实例日志中的两个(相等的)字符串值。
我转换 char[] 数组的方式有问题吗?
我尝试将实体类变量的类型更改为 String(当然还有 getter 和 setter 方法),但也不起作用。
【问题讨论】:
-
根据stackoverflow.com/questions/7655127/…,您正在以正确的方式进行转换。
-
在比较之前对字符串尝试
trim()。另外,寻找字符编码差异。 -
谢谢 Singularity (Y) trim() 方法有效! :)
标签: java string jpa oracle11g ejb