0

オブジェクト リスト内のオブジェクトから 1 つの文字列値を取得しています。

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[] array として定義します。したがって、比較を行う前に文字列に変換する必要があります。

問題は、この if ステートメントが常に false を返し、実行されないことです。

if(transitionName.equalsIgnoreCase(newString)){}

値 (Logger.Debug) をログに記録しようとすると、サーバー インスタンス ログに 2 つの (等しい) 文字列値が完全に表示されます。

char[] 配列を変換する方法に何か問題がありますか?

エンティティ クラス変数の型を String に変更しようとしましたが (もちろん getter メソッドと setter メソッドも)、どちらも機能しません。

4

1 に答える 1

1

比較する前に、文字列に対して trim() を試してください。また、文字エンコーディングの違いを探します。– 特異点

于 2013-01-27T05:56:56.127 に答える