JPAが管理する次のエンティティを使用して、グラスフィッシュにWebアプリケーションをデプロイしようとしています。データベースでは、 int の配列がvarcharに格納されており、この文字列をセッター/ゲッターで分割/結合します
@Entity
public class MyClass
implements Serializable
{
private long id;
private int arrayofInt[];
(...)
private static String join(int array[])
{
StringBuilder b=new StringBuilder();
for(int i:array)
{
if(b.length()!=0) b.append(',');
b.append(i);
}
return b.toString();
}
private static int[] split(String s)
{
String tokens[]=s.split("[,]");
int array[]=new int[tokens.length];
for(int i=0;i< tokens.length;++i)
{
array[i]=Integer.parseInt(tokens[i]);
}
return array;
}
@Column(name="fieldName")
public String getArrayOfInt()
{
return join(arrayOfInt);
}
public void setArrayOfInt(String arrayOfInt)
{
this.arrayOfInt=split(arrayOfInt);
}
@Transient
public int getCount()
{
return this.arrayOfInt.length;
}
(....)
}
アプリケーションを Glassfish にデプロイすると、次のエラーが発生します。
リモート エラー: 展開中にエラーが発生しました: アプリの準備中に例外が発生しました: オフセット 12345 のメソッド MyClass.getCount()I の arraylength のオペランド スタックの型が正しくありません。詳細については、server.log を参照してください。コマンドのデプロイに失敗しました。
getCount を
@Transient
public int getCount()
{
return 0,
}
別の新しいエラーが発生します。
リモート障害: 展開中にエラーが発生しました: アプリの準備中に例外が発生しました: メソッド MyClass.getArrayOfInt()Ljava/lang/String のオペランド スタックの型が正しくありません。詳細については、server.log を参照してください。コマンドのデプロイに失敗しました。
どうすればこれを修正できますか?
ありがとう !